Kiln в настоящее время не поддерживает вложенные операции, которые используют вложенные URL-адреса на сервере . Это означает, что вы не можете использовать оба следующих URL:
http://server/kiln/somepath/project1
http://server/kiln/somepath/project1/thirdparty
Таким образом, вы должны настроить Kiln так, чтобы у вас было четыре хранилища на сервере:
http://server/kiln/somepath/project1
http://server/kiln/somepath/project2
http://server/kiln/somepath/thirdparty
http://server/kiln/somepath/common
Это просто - всего четыре нормальных репозитория. Затем клонируйте «project» и создайте файл .hgsub
с:
thirdparty = http://server/kiln/somepath/thirdparty
common = http://server/kiln/somepath/common
Когда вы вернете это обратно в Kiln, он заметит и отобразит ссылки для под-репозиториев. Тем не менее, вложенные репозитории не будут в конечном итоге будут вложены в сервер. Так что на сервере не будет никакого пути project1/thirdparty
.
Также далеко не ясно, чего бы вы хотели. Когда у вас есть несколько проектов, которые сотрудничают и используют некоторую общую кодовую базу, вы хотите, чтобы «project1» и «project2» получали изменения друг друга в эту общую кодовую базу. Так что очень полезно, чтобы подпункт common
в обоих проектах выдвигался из http://server/kiln/somepath/common
.
В Mercurial мы обычно рекомендуем использовать пути вида common = common
в файле .hgsub
. Это означает, что сервер должен поддерживать вложенные репозитории. Когда Kiln не поддерживает вложенные репозитории, вы можете вместо этого использовать полные пути.
Когда вы изначально настраиваете подпапки, то помните, что вам нужно обновить их вручную. Таким образом, с указанными выше URL вы должны настроить «project1», запустив:
$ hg clone http://server/kiln/somepath/project1
$ echo "common = http://server/kiln/somepath/common" > .hgsub
$ echo "thirdparty = http://server/kiln/somepath/thirdparty" > .hgsub
$ hg commit -m "Created subrepos"
Это создает начальные пустые подпапки. Они пусты, потому что вы не сказали Mercurial, какая ревизия вам нужна. Это отслеживается в .hgsubstate
, где вы найдете:
0000000000000000000000000000000000000000 common
0000000000000000000000000000000000000000 thirdparty
Для заполнения под-репозиториев вы делаете
$ cd common
$ hg pull --update
$ cd ../thirdparty
$ hg pull --update
$ cd ..
$ hg commit -m "Updated subrepos"
Это обновляет 000...
строк в .hgsubstate
текущими идентификаторами наборов изменений наконечника для двух подпунктов. Будущие клоны «project1» заметят файл .hgsubstate
и обязательно обновят вложенные версии до упомянутой там ревизии.