我会尽量简明扼要地解释我的情况:
我有一个模板项目,我在开始一个新项目时用作模板(duh)。 这个模板项目不断发展,有时我会在另一个项目中更新它。
想象一下:
(所有项目都在版本控制之下)现在当我在项目A中更改template.file时,我希望所有其他项目中的所有其他template.files都能更新
我在Windows上,使用tortoisehg,我在这个版本游戏中相对较新。我想我会用树枝做这个吗?但那么projectA.file和ProjectB.file也不会被添加到模板项目中吗?
答案 0 :(得分:2)
您可以做以下事情:
进入模板项目并合并到项目A中,然后在提交之前修剪您不想要的所有内容。这是相当费力和耗时的。
然后你可以进入项目并从模板项目中拉出并非常仔细地合并。
我不会因为多种原因这样做。首先,它很混乱,容易出错。其次,它导致两个项目都包含所有其他项目的所有文件,即使在提示修订中这些文件被视为已删除。历史仍然存在。
这是你可以做的另一件事:
使用hg export
导出修改项目A中模板文件的更改。然后使用hg import
将该更改导入到模板项目中。
然后从模板项目拉入项目A和项目B并合并。
这要求您在修改项目A时自律,并始终对模板文件进行修改。
或者,您可以手动修改导出的更改以删除无关的更改。
这是你可以做的第三件事:
始终仅在模板项目中修改模板文件。然后,您可以从模板项目中拉入项目A和B并合并。
答案 1 :(得分:1)
Mercurial中没有任何东西能让你干净利落地开箱即用。
你可以:
在这3个中的任何一个中,没有任何东西可以帮助您确保每个存储库中的文件同步。
在第一种情况下,你将有3个不同的template.file副本,而更新一个不会更新其他两个,而且Mercurial中没有任何内容可以帮助你。
在第三种情况下,三个存储库完全不同且分离,这意味着一个存储库中的更改不会传播到另一个存储库中。
然而,第二种情况可以完成,但是如果您需要在Project A / B存储库中拥有该文件的副本,那么您将回到第三种情况。
但是,您可以使模板项目成为项目A的子存储库,而不是将文件的副本从模板项目中复制到项目A中,而是指代您在子项目中使用的那个。库中。
这是Mercurial处理此类事情的方式。