Может ли один репозиторий Mercurial жить внутри другого репозитория Mercurial? - PullRequest
8 голосов
/ 20 мая 2010

Может ли одно репозиторий hg жить в другом репозитории hg в моей локальной файловой системе?

screenshot of one repo inside another

Я опускаю вики для Bitbucket для «песочницы» и хочу узнать, должно ли это быть в repos/sandbox/wiki или repos/sandbox-wiki.

Можно ли сделать первое?

Редактировать: См. Подпозиторий .

Ответы [ 4 ]

7 голосов
/ 20 мая 2010

Короткий ответ - да, но я не представляю, почему вы захотите.

В вашем примере, я думаю, вы должны пойти с:

repos/sandbox-wiki

[править] Дополнительно:

Yo Dowg, I herd you like repositories.

So we put a repo in your repo so you can version while you version

: -)

5 голосов
/ 20 мая 2010

Да и нет. Зависит от того, что вы хотите сделать. Вы можете создать репозиторий «sandbox / wiki», но файлы из этого внутреннего репозитория не будут переданы во внешнее репозиторий «sandbox» (@Jason прав). Если не хочешь, без проблем.

Попробуйте явно добавить файлы из репозиториев вики в sandox, и вы получите сообщение ниже. Если вы просто добавите путь к некоторому каталогу, содержащему внутреннее хранилище, файлы будут просто проигнорированы.

Из корневой директории sandox:

   hg add wiki/myfile
   abort: path 'wiki/myfile' is inside repo 'wiki'
1 голос
/ 28 июня 2010

Mercurial не допускает вложенные репозитории, но для них есть хотя бы одна причина:

Представьте, что вы работаете в проекте: / MyProject. В эту папку вы помещаете все: код, документацию, тесты и т. Д.

Вы хотите сделать резервную копию своей работы, потому что это очень важно, поэтому вы создаете хранилище для / MyProject. Затем сверхурочно вы используете пакеты, чтобы сохранить эволюцию / MyProject и сохранить их на флэш-памяти USB, чтобы вы могли восстановить все на случай поломки жесткого диска.

Помните, что / MyProject содержит все. И среди всего этого есть основной код и некоторые вспомогательные проекты. Вы также хотите отслеживать ход выполнения вспомогательного проекта в / MyProject / AuxiliaryProject, поэтому вы используете Mercurial для отслеживания его эволюции.

Также вы хотите иметь отдельный репозиторий для основного кода: / MyProject / Main

В этой ситуации вам нужны вложенные репозитории: один большой для возможности резервного копирования всего, используя пакеты и дочерние репозитории для управления каждым подпроектом.

Я думаю, что Mercurial должен предоставить пользователю несколько вариантов при инициализации репозитория. Например: - игнорировать вложенные репозитории - включать вложенные репозитории, но игнорируя папки .Hg (т. е. действовать, как если бы не было вложенных репозиториев, но не игнорировать информацию, содержащуюся во вложенных репозиториях). - включать вложенные репозитории, а также включать папки .Hg (имеет смысл для целей резервного копирования)

--------- Редактировать: Подпозитории - это функция, которая находится в стадии разработки: https://www.mercurial -scm.org / вики / subrepos

Кроме того, существует расширение под названием «лес», которое в будущем может устареть: https://www.mercurial -scm.org / ForestExtension

0 голосов
/ 20 мая 2010

Вам нужно настроить файл .hgignore в песочнице, чтобы исключить вики, потому что mercurial предполагает, что он отвечает за всех потомков. Это, вероятно, вызовет больше путаницы в пользователях, чем стоит.

...