У нас есть несколько общих библиотек, которые существуют в качестве вложенных репозиториев в родительском репо.Если человек клонирует родительское репо, оно выглядит примерно так:
/ParentRepo
---- .hg
---- .hgsub
---- .hgsubstate
---- SharedSub1
---- SharedSub2
---- SharedSub3
---- SharedSub4
---- ParentRepo.sln
.hgsub выглядит следующим образом:
SharedSub1 = http://ourfogbugz.us.com/..../SharedSub1
SharedSub2 = http://ourfogbugz.us.com/..../SharedSub2
SharedSub3 = http://ourfogbugz.us.com/..../SharedSub3
SharedSub4 = http://ourfogbugz.us.com/..../SharedSub4
hgrc каждого подпункта выглядит примерно так:
default = http://ourfogbugz.us.com/..../SharedSub1
Довольно стандартные вещи.
Но!
Как, используя эту настройку, коллега вытаскивает из другого, не используя центральный сервер в качестве посредника?Таким образом, сотрудник A выполняет «hg serve», а B - «hg pull http://coworkerA.us.com:8000'...», но это не удастся, поскольку файл hgsub по-прежнему указывает на центральный сервер, и, таким образом, B получает изменения только от центральногосервер, и не получать никаких изменений от подпунктов А., которые не существуют на центральном сервере.
Это еще более усложняется, если центральный сервер недоступен или недоступен.Люди не могут отстраниться друг от друга напрямую, используя подпункты!
Как происходит перетаскивание между сотрудниками, используя подпункты?Редактирование файлов hgrc и hgsub не может быть и речи, потому что вам придется делать это для каждого подрепортажа (у нас их около 20) и один раз для каждого сотрудника!
Я также разместил этот вопросна Kiln StackExchange, чтобы поразить более широкую аудиторию: http://kiln.stackexchange.com/questions/1780/pulling-from-a-co-worker-when-using-subrepositories