Рабочий процесс, чтобы держать подкаталоги Mercurial в актуальном состоянии, когда в клоны вносятся изменения? - PullRequest
5 голосов
/ 01 сентября 2011

Я прочитал все вопросы о подкаталогах 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, и он также автоматически извлекает вложенные элементы.

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

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

1 Ответ

4 голосов
/ 06 сентября 2011

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

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

  1. Расширение share позволяет вам создать два или более репозитория с общей папкой .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.

...