是否可以将Mercurial配置为将子存储库推送到推送其父目录时指定的相同路径?
假设我们有一个带有子仓库的父仓库,并且该子仓库也有自己的子仓库:
A
- B
- - C
现在,在A,B和C中,我们都指定了备用路径:
.hg / hgrc
[paths]
default = http://path.to.default/A
devMachine = ssh://user@dev.machine/A
B .hg / hgrc
[paths]
default = http://path.to.default/B
devMachine = ssh://user@dev.machine/A/B
C .hg / hgrc
[paths]
default = http://path.to.default/C
devMachine = ssh://user@dev.machine/A/B/C
如果我尚未发布A,B和C中的变更集,那么我不想推送到中央存储库,但是我确实想在我的Work&Home开发机器之间推送它们,是否可以设置任何方法将Mercurial设置为在我执行hg push devMachine
时也会将B和C也推到devMachine
,而不是将A和C都推到devMachine
并将B和C都推到default
吗?
到目前为止,我一直在将新提交阶段设置为secret
并进行以下操作:
$ cd A/B/C
A/B/C$ hg phase -d
A/B/C$ hg push devMachine
A/B/C$ hg phase -sf
A/B/C$ cd ..
A/B$ hg phase -d
A/B$ hg push devMachine
A/B$ hg phase -sf
A/B$ cd ..
A$ hg phase -d
A$ hg push devMachine
A$ hg phase -sf
出于明显的原因,这并非最佳选择。如果执行A$ hg push devMachine
将所有子存储库递归地推到devMachine
路径(当然,它已经在.hg / hgrc中定义了),那就更好了。
我知道我可以很轻松地编写脚本。我只是很好奇,Mercurial是否内置了某些我无法找到的功能。
答案 0 :(得分:0)
我确实想在我的Work&Home开发机器之间使用它们, 我可以通过任何方式设置Mercurial,以便当我进行hg push devMachine时 它将B和C也推入devMachine,而不是将A推入 devMachine并将B和C都推为默认值?
嗯,使用TortoiseHg可以这样工作。 hgrc 路径部分的设置方法与您描述的相同。但是在调用中未使用路径别名。
日志输出为:hg push some-real-absolute-path
尝试使用hg push devMachine
而不是hg push ssh://user@dev.machine/A
关于阶段,在Work(和/或Home)机器的每个存储库中,添加到 hgrc :
[phases]
publish = False
然后,仅当推送到中央存储库时,提交才会更改为 public 阶段。
我建议不要使用:
[phases]
new-commit = secret
秘密阶段在子存储库中混合得不好。我只会在根存储库中使用它。