关于我的存储库结构的建议

时间:2012-07-31 18:26:11

标签: mercurial rcs

我是应用数学家,最近我加入了一个项目,涉及为我们的科学应用开发生产代码。代码库不小,它作为Web应用程序的一部分进行部署。

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

我创建了一个Mercurial存储库,为其添加了所有代码版本,并说服每个人使用它。但是,自从迁移到Mercurial之后,我们几乎感觉不到需要升级版本号,即使使用hg copy进行艰难的操作也可以让我们保留修订历史记录。

在这里,我需要您就维护此代码库的最佳实践提出建议。在RCS下,在repo中保留不同版本的文件夹是否有意义?如果我们在repo中保留一份代码副本,那么跟踪版本最常用的方法是什么?自述文件?我们是否应该在repo指定版本之外保留代码的快照?保持原样是否有意义?你用什么策略?

我们的团队是一群科学家,没有人有过如何维护这样一个回购的经验,所以我对通常做的事感兴趣。

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:0)

This是对Mercurial的一个很好的快速介绍,它甚至可以通过讨论如何使用文件夹来保存不同的版本来实现。

如果你使用hg copy命令,我认为你可能走错了路,我从来不需要它;)

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