Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 其他类型文件的版本控制?(非源代码文件)_Bash_Version Control_Applescript - Fatal编程技术网

Bash 其他类型文件的版本控制?(非源代码文件)

Bash 其他类型文件的版本控制?(非源代码文件),bash,version-control,applescript,Bash,Version Control,Applescript,编程中的版本控制是非常必要的,有些程序允许对源代码以外的文件(如MS Word、InDesign等)进行更改跟踪或表单版本控制 是否有任何类型的系统或体系结构/协议可用于在任意网络/共享目录中为任意类型的非源代码文件建立版本控制?[在Max OSX网络上运行] (不跟踪单个文件中的单个更改(因为这是不可能的),但至少记录类似“John Doe已在2010年7月15日下午12:01签出此文件”的内容,以便我们可以跟踪谁正在修改文件,并且人们知道在重新签入之前不会对其进行操作。) 如果不存在基于软件

编程中的版本控制是非常必要的,有些程序允许对源代码以外的文件(如MS Word、InDesign等)进行更改跟踪或表单版本控制

是否有任何类型的系统或体系结构/协议可用于在任意网络/共享目录中为任意类型的非源代码文件建立版本控制?[在Max OSX网络上运行]

(不跟踪单个文件中的单个更改(因为这是不可能的),但至少记录类似“John Doe已在2010年7月15日下午12:01签出此文件”的内容,以便我们可以跟踪谁正在修改文件,并且人们知道在重新签入之前不会对其进行操作。)

如果不存在基于软件的交钥匙解决方案,是否有更好的替代方案

也许可以编写由Bash脚本/苹果脚本、自动机操作和/或Finder插件组成的某种版本控制系统,以添加类似“右键单击>签入/签出文件”的命令,该命令同步到服务器上的自定义版本控制程序

或者如何防止人们更改其他人可能正在处理的文件?

(其中一个问题是人们将文件复制/粘贴到他们的硬盘上并进行处理,这会阻止操作系统抛出“使用中的文件”错误。并且告诉他们不要像那样复制文件是不可能的。)

背景:


我的公司处理各种数字文件(电子书、互动白板活动文件、照片、视频等)。我们经常有多人处理每个项目,有时他们复制文件,覆盖同时处理同一文件的其他人所做的更改(即,将文件从网络共享复制到其本地HD,进行更改,然后复制回网络),将旧版本保留在与工作文件相同的目录中,不知道谁的文件放在哪里(比如人们将文件从共享项目目录复制到他们的个人共享文件夹中,进行更改,并来回移动)。

由于您的服务器支持,一种低成本低收益的可能性是使用,它保留了每个文件的每个版本的副本。主要的缺点是它没有原则(它只保留副本,不做任何反对并发编辑或存储更改日志的事情),而且它可能会占用大量资源(每次保存时,都会得到一个新版本)。主要的优点是它是全自动的,所以您不需要任何用户培训


它的各种版本控制系统的对应项在Windows世界中相当流行。它们提供shell集成,而不是应用程序集成。在MacOSX上,谷歌发现;我不知道它工作得有多好。

没有任何SCM系统能够合理地满足您的需求。如果您使用的文件种类繁多,那么您需要投资某种数字资产管理或内容管理系统。签出(从而锁定其他用户)的功能是一个典型的功能,可以跟踪、记录和管理修订(用户签出文件,下载以编辑它,并在完成后签入)。DAM系统和CMS专门设计用于您正在处理的文件类型,如问题中所述


我的回答中有一个快速补充:有很多DAM和CMS系统,所以最好的第一步是创建一个RFP,将您当前的环境、需求、内部规则和目标分解成易于理解的部分,并发送给各种供应商,评估他们的响应。

git是故意愚蠢的。它是如此的愚蠢,它以愚蠢而命名

Git是如此愚蠢,以至于它不知道或不关心它跟踪的文件使用的是什么格式。如果两个人编辑同一个文件,它不知道如何在合并中修复它们。(事实上,对于很多类型来说,它都很智能,但实际上这是一个独立于版本跟踪功能的额外模块)

但它足够聪明,可以防止您在更改发生分歧时覆盖更改。当这种情况发生时,它还会告诉你谁应该受到责备

git不管理中央存储库,没有这样的概念。在git中,每个进行更改的人在其本地机器上都有完整的存储库,并且他们相互传递更改。您可以通过将更改传递到某个方便的服务器上的官方“受欢迎”存储库来“伪造”中央存储库

那么这些是如何回答你的问题的呢

是否有任何类型的系统或体系结构/协议可用于在任意网络/共享目录中为任意类型的非源代码文件建立版本控制?[在Max OSX网络上运行]

或者有什么办法可以防止人们对其他人可能正在处理的文件进行更改

Git不知道也不关心它跟踪的是什么格式。它对所有文件都一视同仁。你真正关心的似乎是防止一个人对另一个人的改变大加指责


Git完全回避了这个问题。没有正式的副本给clobber。如果您使用的是集中式服务器,并且一个用户试图推送一个更改,该更改将覆盖比该用户看到的更新的更改,则推送失败。用户必须提取新版本,解决更改/冲突,然后重试。即使用户固执地将旧的更改放在地板上并上传自己的更改,而不考虑在第一次拉入和最后一次推入之间发生的更改,也不会丢失任何数据,因为git保留了一切,更负责任的个人可以挑选这些文件并修复它。

对于开源数字资产管理系统,请看