用户登录

你在这里

版本控制系统和Subversion

我曾答应在我关于数字化和编辑数字的帖子但一直没能抽出时间。最近一连串的请求下载Uintah让我想起了我的诺言。故事是这样的。

考虑以下情况。现在是一月份,你开始写一段代码。经过大量的调试和测试后,您最终确定它是有效的。你运行了大量的模拟并公布了结果。在6月,您决定在您的模型中有几个改进需要合并到您的代码中。您解决了所有问题,并开始修改代码。为了安全起见,您保留了原始工作代码的副本。最初的几个小改变就像一种魔力。然后你做了一个你认为很小的改变,却发现整个代码都坏了。因此,您开始注释部分,以找出是什么破坏了代码,直到您到达(您认为是)1月份的版本。 But the code still does not work. After several days of frustration you find that you forgot to comment out two extra lines and finally get the code to work. Now you have to work forward and incorporate the new changes again and so on ....

很久以前,软件工程师们就认为记录代码中的变化应该是自动化的。结果是源代码控制系统(SCCS).这里有一个关于我在SCCS的经历的故事。1994年,我接到了库德雷穆克(印度南部一个美丽的山城)的一位客户的紧急电话。我们的地质统计代码不起作用,这影响了他们的生产计划。我带着我们最新版本的代码(以直径1英尺的磁带和一对6英寸的盒式磁带的形式)飞了下来。客户的代码版本是三年前的。此外,Kudremukh代码中还有几个额外的功能已经从主版本中删除。我必须在一周内让代码运行起来。幸运的是,我们的代码保存在SCCS存储库中。我找到了客户代码的版本,并从我的磁带中检查了那个版本。 A comparison of the file sizes in the customer's version and my SCCS version showed that a few files were different. After that it took me less than an hour to figure out the problem and fix it. Had I not had SCCS it would have taken me several days to find the problem.

然而,到1995年,SCCS几乎已经过时,取而代之的是一种更好的系统,称为版本控制系统(RCS).RCS有一些与SCCS相同的问题,即一次只能控制一个文件,并且需要额外的脚本来同时管理大量文件。RCS几乎立即被并发版本系统(CVS)这使得处理大型项目更加容易。即使在今天,CVS也被广泛用于源代码控制。

2001年,CVS的一个开源替代品叫做Subversion (SVN)开始流行起来。我们在2002年左右将我们的ubuntu代码从CVS移到了SVN。Subversion与大多数Linux发行版捆绑在一起,也可以从中下载http://subversion.tigris.org/.SVN存储库易于设置和使用。一个好的起点是针对非程序员的Subversion版本控制基思·菲尔德豪斯著。

版本控制不仅仅是针对程序员的。我用它来处理提案、论文、数据和许多其他类型的文件。尝试一下,你将永远不会回到手动维护无数个文档副本的状态。

评论

N. Sukumar的照片

Biswajit,

非常感谢对版本控制的介绍和指点。我确实使用在CVS下维护的代码,并且可以肯定地看到代码维护的好处,除了能够让大量开发人员轻松地处理相同的代码之外。如果没有CVS/subversion,这将成为一项重要且容易出错的工作。希望不久之后,我将在自己的一些代码开发工作中学习并采用subversion,您提供的链接将对我的入门有用。

Sukumar,

cvs和svn的用户界面(几乎)相同,但内部结构略有不同。一旦创建了存储库,将应用相同的基本命令。例如,您可以使用“svn checkout”来签出代码副本,而不是使用“cvs checkout”。类似地,“cvs add”变为“svn add”,“cvs commit”变为“svn commit”,“cvs update”变为“svn update”,“cvs diff”变为“svn diff”。在svn中,版本控制的粒度更细一些(每次新提交都会导致版本更新)。

与cvs相比,svn的主要优点(我认为)是使用svn可以很容易地创建新的存储库,并且可以很容易地从树中派生出新的主干。如果您已经了解了cvs,那么您只需要学习一些很少使用的命令就可以开始了。

——Biswajit

伊丽莎白·M·卡尔曼的照片

很好的颠覆历史。

马克·e·沃尔特的照片

Biswajit,

我一直在寻找更好的方法来合作提案。我可以看到LaTex和SVN可以很好地协同工作,但是您可以使用MSWord做些什么呢?最近使用GoogleDocs的经历让我确信,它还没有完全准备好做我想做的事情(数字、自动标签/编号等)。你们是如何与SVN合作的?我发现很难打败MSWord的跟踪变化,但它仍然是最好的工作顺序,而不是并行…

谢谢你,马克

马克,

我自己就是Unix和LaTeX爱好者,Subversion对我很有帮助。不过,我听说你可以使用MS-WIndows版本的subversion(称为TortoiseSVN),因为它能很好地处理Word文档。你可以尝试一下提示和技巧使用SVN进行Word文档管理.我想知道,当多个人同时提交更改时,这种方法是否有效。

——Biswajit

biplab的照片

SVN可以很好地处理纯文本文件。它不能生成二进制差异,二进制差异不容易创建和管理。通常二进制文件的diff大小比普通文本文件的diff大很多。http://xdelta.org/),可以生成二进制diff。

SVN可以很好地处理基于xml的最新文档文件。但是旧的文档文件是二进制文件,不能由SVN直接管理。

您可以使用MS Word内置的版本管理系统。阅读下面的文章

http://support.microsoft.com/kb/305216/en-us

--

Biplab

http://biplab.in

这很方便,Biswajit,谢谢。我和你一样,马克,我必须和那些仍然不能离开微软Word的团队一起工作。我发现文档只是中等乏味,对于销售来说没有任何区别。如果他们至少可以使用谷歌文档,事情会更有效率,但这仍然离开了媒体。

我用Ruby on Rails创建了一个名为honeyypitch的应用程序,可以让团队协作并嵌入视频、幻灯片、谷歌电子表格等,这样我就不必发送4个单独的文档。它是为内部使用而设计的,然后我们让开发人员将其提供给其他人。

TortouseSVN技巧很方便,我将与我的团队分享,他们害怕使用MS Word以外的任何东西。

詹姆斯

----

提案自动化和销售协作:

“把你的激情和蜜汁混搭起来”http://www.honeypitch.com

订阅“版本控制系统和Subversion”的评论

最近的评论

更多的评论

辛迪加

认购辛迪加