2012-07-31 30 views
1

我是一名应用数学家,最近我加入了一个项目,该项目涉及我们科学应用程序的开发代码。代码库不小,它作为Web应用程序的一部分进行部署。关于我的存储库结构的建议

当我加入时,代码在没有版本控制系统的情况下被奇迹般地维护。在服务器中有一个中央文件夹,研究人员在需要使用代码时会从中复制文件夹。在这个根目录下面有一组具有不同版本代码的目录,所以人们将开始研究他们找到的最新版本,并用他们的修改创建一个新版本。

我创建了一个Mercurial仓库,添加了所有的代码版本,并说服所有人使用它。但是,自从转向Mercurial以来,我们几乎感觉不到需要升级版本号,即使使用hg copy也不会让我们保留修订历史记录。

这里是我需要你维护这个代码库的最佳实践的建议。在RCS下使用不同版本的文件夹保存在回购中是否有意义?如果我们将代码的单个副本保存在回购中,跟踪版本的最常见方式是什么?自述文件?我们是否应该将代码的快照保存在指定版本的repo之外?保持原样是否有意义?你使用什么策略?

我们的团队是一群科学家,没有人有关于如何维持这样的回购的经验,所以我对什么是通常做的感兴趣。

回答

6

如果您打算使用版本控制系统,请忘记这些版本文件夹。完全地。 Mercurial会为您做到这一点,该存储库是项目所有文件的完整历史记录。

跟踪版本号的常用方法是tags。您将带有版本号的标签分配给变更集。

为了帮助您,作为版本控制中的“入门指南”,我建议您阅读本书:Version Control By Example。它是免费的,它从一开始就讲述CVCS,DVCS,基础知识,存储库是什么,基本命令等。它也有一些有趣的类比,比如3D文件系统:目录x文件x时间。这本书很有趣,很容易理解,我强烈推荐它。

我还推荐一些GUI软件,如TortoiseHg。在日常使用中,我大部分时间都花在控制台上,但是当您仍然不知道所有命令时,特别是在开始时GUI非常方便。最好的部分是图表,你可以直观地看到正在发生的事情。

0

This是对Mercurial的一个很好和快速的介绍,它甚至开始讨论如何使用文件夹来保持不同的版本并不那么好。

我想你可能是在错误的轨道上,如果你使用的是汞复制命令,我从来没有需要它;)

的教程教汞的命令行版本,这是我个人比较喜欢。当您需要更好地了解存储库时,可以运行“hg serve”并在您的Web浏览器中打开localhost:8000。我更喜欢TortoiseHG,但我意识到很多人都想要一个纯粹的GUI工具。