Рабочий процесс для обновления субрепозиториев Mercurial при внесении изменений в клоны?

Я прочитал все вопросы о суб-репозиториях Mercurial, которые мог, но до сих пор не знаю, как это работает. Мы используем hgweb.cgi в IIS, поэтому у нас есть пути http: // ко всем нашим репозиториям.

Вот базовый макет:

/Libraries - http://server/Libraries
/Project1 - http://server/Project1
/Project1/LibrariesSubrepo - http://server/Project1/LibrariesSubrepo (clone of libraries)
/Project2 - http://server/Project1
/Project2/LibrariesSubrepo - http://server/Project2/LibrariesSubrepo (clone of libraries)

В файлах .hgsub у меня установлен путь как:

LibrariesSubrepo = LibrariesSubrepo

Если я хочу работать над проектами, я клонирую их с сервера на свою рабочую станцию, поэтому у меня есть клон Project1 и Project2, и он также автоматически извлекает вложенные репозитории.

В проекте project1 на моей локальной рабочей станции я вношу некоторые изменения в файлы в папке / Project1 / LibrariesSubrepo. Как мне убедиться, что эти изменения вернутся в исходное репо для библиотек на сервере? Должен ли я вручную передавать изменения из субрепо в исходный репо субрепо?

Я хотел бы иметь возможность вносить изменения в репозиторий Project1 локально, затем фиксировать / нажимать эти изменения, а затем в Project2 я смогу вытащить изменения с сервера, который должен обновить Project2 / LibrariesSubrepo до последней версии.


person jpshook    schedule 01.09.2011    source источник


Ответы (1)


Вы определенно можете вручную отправить из своего LibrariesSubrepo в Project1 в Libraries репозиторий на сервере, а затем вручную вытащить из Libraries в LibrariesSubrepo в клоне Project2.

Однако вы также можете связать вложенные репозитории на сервере:

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

  2. Создайте символическую ссылку для .hg папок - больше oldschol, и это работает только в том случае, если вы находитесь на сервере, где вы можете создавать символические ссылки (серверы Unix или Windows Vista и более поздние версии с соответствующими правами).

  3. Храните только одно вложенное репо на сервере, но выставляйте его трижды в конфигурации hgweb. Нравится:

    [paths]
    Project1                  = /repos/Project1
    Project1/LibrariesSubrepo = /repos/Libraries
    Project2                  = /repos/Project2
    Project2/LibrariesSubrepo = /repos/Libraries
    

Во всех случаях на самом деле на сервере всего три репозитория: Project1, Project2 и Libraries.

person Martin Geisler    schedule 06.09.2011
comment
Еще один вопрос: при работе с Subrepos, предполагается ли, что вы обычно делаете коммит сначала в subrepo, а затем в родительском репо, или вы просто делаете коммит в родительском репо? - person jpshook; 06.09.2011
comment
Пожалуйста, задавайте несвязанные вопросы как новые вопросы и задавайте их в списке рассылки Mercurial. Это лучший форум для обсуждения. - person Martin Geisler; 15.09.2011