Могут ли хранилища Mercurial быть вложенными?

Что произойдет, если уже есть хранилище Mercurial в

/User/peter/development

и теперь я хочу добавить репозиторий для

/User/peter

потому что мне также нужна версия .bashrc, .profile или, может быть, /User/peter/notes. Будет ли хранилище выше уже существующего репозитория создавать конфликты для Mercurial?

Ответ 1

Все будет хорошо.

Кажется, что 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.

Ответ 2

Существует функция "subrepositories" , которая была добавлена ​​в Mercurial в версии 1.3, и поддерживается в 1.5, что позволяет некоторым командам hg действовать на вложенные репозитории рекурсивно.