Version control 如何使用版本控制管理库的多个小部件

Version control 如何使用版本控制管理库的多个小部件,version-control,mercurial,Version Control,Mercurial,我不熟悉源代码版本控制,所以我不想在为我的项目选择错误的设置时出错。 我有一个由许多小“过程”组成的“库”(它们是用第三方软件的伪语言编写的)。每个过程都是一个由2/3个文件组成的独立的小“包”(只包括过程本身、文档,可能还有主过程所需的一个或两个其他子过程) 因此,我有数百个这样的程序包,根据应用程序的区域归档在子文件夹中,其中一些更复杂,而另一些则更基本 我在早期阶段经常修改这些过程,以改进它们,但当然,有时修改会破坏兼容性,因为它们涉及添加/删除输入/输出参数,所以我想我必须以某种方式“标

我不熟悉源代码版本控制,所以我不想在为我的项目选择错误的设置时出错。 我有一个由许多小“过程”组成的“库”(它们是用第三方软件的伪语言编写的)。每个过程都是一个由2/3个文件组成的独立的小“包”(只包括过程本身、文档,可能还有主过程所需的一个或两个其他子过程)

因此,我有数百个这样的程序包,根据应用程序的区域归档在子文件夹中,其中一些更复杂,而另一些则更基本

我在早期阶段经常修改这些过程,以改进它们,但当然,有时修改会破坏兼容性,因为它们涉及添加/删除输入/输出参数,所以我想我必须以某种方式“标记”每个过程的版本,就像它是一个软件一样

所以我想知道用版本控制管理它们的最好方法是什么(我使用的是Mercurial):我应该制作数百个存储库吗?o_o还是将所有内容都保存在一个大的存储库中,并在每次修改过程时对其进行标记?或者学习和使用子存储库

谢谢你的帮助

Simone

我可以是带有标签的子存储库(或-2013年无更新)

  • “主”repo中的每个变更集都链接到所有存储库中的变更集,即,当您更新到master中的旧变更集时,所有子repo也会相应地更新
  • 主存储库中的标签将允许您标记稳定的|功能组合以供重用

  • 如果每个包都可以独立运行,而不需要与主软件建立任何连接,那么Subrepos就有意义了。如果不满足此条件,我将只使用一个存储库。特别是因为您声明包中包含的文件很少,更改也很少,所以subrepo方法在这里似乎没有意义。

    谢谢您的回答。我不确定是否应该开始实现子存储库。。。在文档中,它被标记为“万不得已的特性”。-/这是一个运行良好的特性。它被标记为“最后手段”,因为它增加了很多复杂性。我认为,为了简单起见,最好只使用一个存储库,并制定某种“标记方案”,为您的过程制作好标记。这比涉及次级回购要简单得多。正如我所说的,主要项目本身就是程序的“集合”。有些基本过程不依赖于任何东西,但有些更结构化的过程使用一个或多个基本过程。我在foggcreek Klin网站上读到了关于subrepos的一个很好的解释,我喜欢这样的想法,即在我明确推出新版本之前,能够在不破坏其他程序的情况下更改程序的签名。虽然为每个过程创建一个单一存储库现在看起来真的像是胡说八道,但由于管理开销等原因……我选择使用一个存储库的方法有两个原因:a)你说东西(部分)相互依赖。因此,保持它们同步似乎很有用,因为您很可能不希望同时使用单个过程的多个版本。但是,如果您对不同的过程使用特定的版本,则很容易出现这种情况。b) 如果一个存储库的方法不适合您,那么以后很容易改用子存储库的方法。另一种方法是更加冷酷无情,子存储库肯定有其粗糙的边缘。