似乎有很多版本控制系统.因此,要得出一个糟糕的结论,一定要写一个很容易.
为编写简单的文件版本控制系统,必须考虑哪些问题?(最低必要功能是什么?)
这对一个人来说是一项可行的任务吗?
Bil*_*ard 21
了解版本控制的好地方是Eric Sink的Weblog.他的最新文章是版本控制存储中的时间和空间权衡,举个例子.
另一个很好的例子是他的一系列文章Source Control HOWTO.是的,这都是关于如何使用源代码控制的,但它有很多关于开发人员在设计系统时必须做出的决策和权衡的信息.最好的例子可能是他关于存储库的文章,他解释了存储版本的不同方法.我从这个系列中学到了很多东西.
dbr*_*dbr 10
怎么简单?
您可以使用单行shell脚本upversion.sh编写版本控制系统:
cp $WORKING_COPY $REPO/$(date +"%s")
Run Code Online (Sandbox Code Playgroud)
对于大型二进制资产,基本上就是您所需要的!它可以很容易地改进,比如将版本文件夹设置为只读,也许记录每个版本的元数据(例如,你可以有一个文本文件$REPO/$(date...).meta)
这听起来像是一个巨大的简化,但它与许多电影后期制作设施使用的资产管理系统并不相同(例如)
你真的需要知道你想要什么版本,为什么..
对于大型二进制资产(例如视频),您需要专注于可视化比较版本的工具.你也可能需要处理依赖性("我需要image123.jpg和video321.avi来生成这个图像")
使用代码,您需要专注于在任何两个版本之间制作差异非常简单的事情.此外,由于对源代码的编辑通常很小(来自具有数千行的项目中的几个字符),因此复制每个版本的整个项目将非常低效 - 因此您只存储每个版本之间的差异(delta编码).
要对数据库进行版本控制,您可能希望存储有关模式的信息,跟踪新表或列,或者对现有数据库进行调整(而不是计算数据库文件的增量,或者像前两个系统一样制作副本)
没有完美的方式来版本化所有,你必须专注于做好一件事.Git非常适合文本,但不适用于二进制文件.Adobe Version Cue非常适合使用二进制文件(图像),但对文本无用.
我想要考虑的事情可以概括为......
如果您是Linus Torvalds,则可以在一个月内编写类似Git的内容。
但是“版本控制系统”是一个模糊且可扩展的概念,您的问题确实无法回答。
我会考虑问自己想要实现的目标(了解VCS,学习语言,...),然后定义一些明确的目标。有一个项目很好,但是在短时间内有一个可实现的目标也很好。小小的成功对你的士气有好处。