问题 Mercurial存储库可以嵌套吗?


如果已经存在Mercurial存储库会发生什么

/User/peter/development

现在我想为其添加一个存储库

/User/peter

因为我也想要版本 .bashrc.profile, 或者可能 /User/peter/notes 同样。将现有存储库上方的存储库创建为Mercurial会产生冲突吗?


7226
2017-08-30 21:12


起源



答案:


一切都会好起来的。

似乎Mercurial足够聪明,可以忽略已经拥有存储库的子目录。这是与它的对话:

$ mkdir outer
$ mkdir outer/inner
$ mkdir outer/sub
$ echo red >outer/red.txt
$ echo blue >outer/inner/blue.txt
$ echo green >outer/sub/green.txt
$ cd outer/inner/
$ hg init
$ hg add
adding blue.txt
$ hg commit -m "create inner"
$ cd ..
$ hg init
$ hg add
adding red.txt
adding sub/green.txt
$ hg commit -m "create outer"
$ hg status
A red.txt
A sub/green.txt
$ hg commit -m "create outer"

如您所见,当我添加到外部存储库时,它会忽略内部目录。

如果您想要更加确定,可以将内部目录添加到您的 .hgignore


10
2017-08-30 21:44



不需要在你的任何东西 .hgignore  - 正如你所说,Mercurial会故意忽略嵌套存储库,这正是允许人们(例如Mercurial开发人员自己......)对他们的主目录进行版本化:-) - Martin Geisler
@Martin:那可以解释一下!我建议使用.hgignore作为OP的一些便宜的焦虑疗法比任何东西。 - Tom Anderson
汤姆:嘿嘿,我喜欢用剂量治疗焦虑症的想法 .hgignore! :) - Martin Geisler


答案:


一切都会好起来的。

似乎Mercurial足够聪明,可以忽略已经拥有存储库的子目录。这是与它的对话:

$ mkdir outer
$ mkdir outer/inner
$ mkdir outer/sub
$ echo red >outer/red.txt
$ echo blue >outer/inner/blue.txt
$ echo green >outer/sub/green.txt
$ cd outer/inner/
$ hg init
$ hg add
adding blue.txt
$ hg commit -m "create inner"
$ cd ..
$ hg init
$ hg add
adding red.txt
adding sub/green.txt
$ hg commit -m "create outer"
$ hg status
A red.txt
A sub/green.txt
$ hg commit -m "create outer"

如您所见,当我添加到外部存储库时,它会忽略内部目录。

如果您想要更加确定,可以将内部目录添加到您的 .hgignore


10
2017-08-30 21:44



不需要在你的任何东西 .hgignore  - 正如你所说,Mercurial会故意忽略嵌套存储库,这正是允许人们(例如Mercurial开发人员自己......)对他们的主目录进行版本化:-) - Martin Geisler
@Martin:那可以解释一下!我建议使用.hgignore作为OP的一些便宜的焦虑疗法比任何东西。 - Tom Anderson
汤姆:嘿嘿,我喜欢用剂量治疗焦虑症的想法 .hgignore! :) - Martin Geisler


有一个 “subrepositories” 在版本1.3中添加到Mercurial的功能,是 1.5中支持,允许一些hg命令作用于嵌套存储库 递归。


1
2017-09-25 02:16



这很好知道,但链接被破坏了。 这个链接 现在有效。 - steampowered
Subrepository功能显然是一个 最后的特色 - steampowered