1

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

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

我创建了一个 Mercurial 存储库,向其中添加了所有代码版本,并说服每个人都使用它。然而,自从迁移到 Mercurial 后,我们几乎感觉不到升级版本号的必要性,即使使用困难也hg copy能让我们保留修订历史。

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

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

4

2 回答 2

6

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

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

为了帮助你,作为版本控制的“入门指南”,我推荐这本书:通过示例进行版本控制。它是免费的,从头开始,它讨论 CVCS、DVCS、基础知识、存储库是什么、基本命令等。它还有一些有趣的类比,比如 3D 文件系统:目录 x 文件 x 时间。这本书很有趣,通俗易懂,我强烈推荐它。

我还推荐一些 GUI 软件,例如TortoiseHg。在日常使用中,我大部分时间都在控制台中度过,但 GUI 非常方便,特别是在你还不知道所有命令的开始时。最好的部分是图表,你可以看到正在发生的事情的视觉反馈。

于 2012-07-31T19:20:15.623 回答
0

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

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

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

于 2012-08-02T13:10:53.903 回答