Настройка ртутных / печных подчиненных на osx

Я пытался следовать инструкциям в ответе на этот вопрос, используя печь.

Я хотел бы иметь возможность организовать вещи следующим образом:

  • /somepath/thirdparty сопоставляет с хранилищем печи "Thirdparty" и содержит различный код
  • /somepath/common отображается в хранилище печи "common" и содержит общий код, который я написал

а также

  • /somepath/project1 карты в хранилище печи "project1"
  • /somepath/project1/thirdparty карты в филиал третьей стороны выше
  • /somepath/project1/common карты на ветку общего выше

а также

  • /somepath/project2 карты в хранилище печи "project1"
  • /somepath/project2/thirdparty карты в другой филиал третьей стороны выше
  • /somepath/project2/common карты на другую ветку общего выше

Я обнаружил, что когда я создал .hgsub файл в соответствии с инструкциями и добавил / отправил его в Kiln, я больше не мог просматривать файлы Kiln в средстве просмотра веб-файлов Kiln - он отображал скрытое сообщение о "перегреве" Kiln:-) Кроме того, хотя он автоматически создавал подпапки в правильное место, они не были заполнены файлами (возможно, из-за сбоя).

Кто-нибудь пробовал что-то подобное раньше, используя печь?

Поскольку я намереваюсь разработать ряд приложений, использующих общий код (и, возможно, в конечном итоге выпустить библиотеку как открытый исходный код), я хотел бы управлять ею в отдельных репозиториях. Однако, поскольку некоторые из проектов предназначены для конечных клиентов, я должен иметь возможность предоставить им единый репозиторий, который включает в себя вещи, как описано выше.

1 ответ

Решение

В настоящее время 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

Это просто - всего четыре нормальных репозитория. Затем клонируйте "проект" и создайте .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 файл и убедитесь, что обновили подпункты к ревизии, упомянутой там.

Другие вопросы по тегам