LINUX.ORG.RU

[Mercurial][subrepo]Вложенные репозитории

 


0

1

Есть большой репозиторий projects, в нем .hgsub примерно следующего содержания:
sub1 = https://sub1.site.com/
sub2 = https://sub2.site.org/
sub3 = https://sub3.oss.net/

В итоге структура получается примерно следующая:
* project1
* project2
* project3
* subrepos
* * sub1
* * sub2
* * sub3

Если, например, в sub2 присутствуют уже закоммиченные в него изменения, то что произойдет при попытке сделать hg push в корне основного репозитория - все изменения спокойно лягут в репозиторий projects лежащий на сервере, или так-же будет выполнен push изменения из sub2 в sub2.site.org?


не проверял, но думаю лягут в тот репозиторий в котором ты щас находишься, т.к. так лучше не делать. По крайней мере с hg forrest так, с subrepos, думаю, те же яйца.

true_admin ★★★★★
()

Если push до sub2 дойдет из корня, то всё ляжет в sub2.site.org. Но в если commit делался не из корня, то при push'е будет пропущен sub2 и тебе руками в нем придется вызывать push.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Проверил и все, к сожалению, так. А можно как-нибудь пнуть hg что-бы он без push сделанного в subrepos/sub2 даже не пытался что-нибудь пушить в sub2.site.org?

brumal
() автор топика
Ответ на: комментарий от brumal

А куда ему пушить, если у тебя явно указано sub2.site.org?

Reset ★★★★★
()

Кто пользует mercurial subrepos? Поделитесь информацией как делается:

1. hg status рекурсивно по всему дереву репозиториев?

2. hg diff по всему дереву репов, чтобы получить один готовый patch?

3. external diff через графические тулзы по всему дереву репов?

4. bundle всего дерева репов в один файл?

5. pull/push без центрального дерева репов, а из одного клона в другой?

kamre ★★★
()
Ответ на: комментарий от kamre

1-4

никогда не использовал

5. pull/push без центрального дерева репов, а из одного клона в другой?

Я использую относительные пути, поэтому при clone клонируется всё из текущего места, push/pull работают аналогично.

Reset ★★★★★
()
Ответ на: комментарий от Reset

а можно пример того, про что написано по пункту 5?
очень похоже что это именно то, чего я хотел изначально.

brumal
() автор топика
Ответ на: комментарий от brumal

В центральном репозитории:

main_repo
main_repo/subrepo1
main_repo/subrepo2
main_repo/subrepo3
main_repo/subrepo4

.hgsub

subrepo1 = subrepo1
subrepo2 = subrepo2
subrepo3 = subrepo3
subrepo4 = subrepo4

Reset ★★★★★
()
Ответ на: комментарий от Reset

>> 1-4

никогда не использовал

И для одного репозитория тоже не использовал?

использую относительные пути

Оно работает с hg serve?

kamre ★★★
()
Ответ на: комментарий от Reset

А как вообще ведется main_repo? Т.е. как часто в него делаются коммиты? Или коммиты только в него делаются (и рекурсивно по всем subrepos)?

kamre ★★★
()
Ответ на: комментарий от kamre

И для одного репозитория тоже не использовал?

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

Оно работает с hg serve?

Нет

А как вообще ведется main_repo? Т.е. как часто в него делаются коммиты? Или коммиты только в него делаются (и рекурсивно по всем subrepos)?

Коммиты делаются как угодно куда угодно, но иногда это приводит к несогласованности ревизий в .hgsubstate из-за чего приходится делать push/pull руками из нужного подрепозитория.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.