版本控制通常如何工作?它是否将diff文件保存为带有哈希的跟踪以验证路径?
答案 0 :(得分:8)
查看Eric Sinks blog series on version control。
此外,Joel Spolsky写了Hg Init: a Mercurial tutorial,这最终使我“得到”了分布式源代码控制的全部内容。
有一种方法可以给猫皮肤......
答案 1 :(得分:7)
不同的VCS使用不同的方法。例如,CVS将在服务器上为您提交的每个文件创建一个文件。这本质上是一个RCS格式的文件; CVS只是RCS的一个包装器,它在目录子树中的许多文件上运行RCS命令(RCS只能处理单个文件)。
RCS文件包含更改列表(版本号,签入消息以及更改的内容)。之后是当前HEAD版本的副本。其余文件是版本之间的差异(long explanation)。
这样,CVS可以快速返回HEAD版本(最常请求),并且可以计算其他版本。
CVS不做任何验证;如果您的某个文件损坏,则需要备份。由于CVS基于RCS,因此它不能对版本目录进行版本控制,也不能跟踪重命名。 CVS和RCS使用标准diff(1)
命令来创建差异。
Subversion(SVN)类似地工作但添加了目录和重命名的版本。此外,SVN使用更好的diff算法(xdelta),它提供了一个更小的存储库。
答案 2 :(得分:0)
Darcs非常不同,恕我直言比其他SCM更直观,甚至是分布式的。 对于初学者来说,有一个很好的指导:Understanding Darcs。