Рабочий процесс, чтобы держать 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, и он также автоматически извлекает подпункты.
В проекте 1 на моей локальной рабочей станции я делаю некоторые изменения в файлах в /Project1/LibrariesSubrepo. Как я могу гарантировать, что эти изменения вернутся в исходное хранилище для библиотек на сервере? Нужно ли вручную выдвигать изменения из репо в исходное репо субрепо?
Я хотел бы иметь возможность вносить изменения в репозиторий Project1 локально, затем фиксировать / проталкивать эти изменения, а затем в Project2 я должен иметь возможность извлекать изменения с сервера, который должен обновить Project2/LibrariesSubrepo до последней версии.
1 ответ
Вы можете определенно нажать вручную с вашего LibrariesSubrepo
в Project1
к Libraries
хранилище на сервере, а затем вручную вытащить из Libraries
в LibrariesSubrepo
в клоне Project2.
Тем не менее, вы также можете связать подпункты на сервере:
Расширение общего доступа позволяет создавать два или более репозитория, которые совместно используют
.hg
папка. Сделайте это на сервере, чтобы три экземпляра вложенного отчета на сервере совместно использовали.hg
папки.Симлинк
.hg
Папки - больше oldschol, и это работает, только если вы находитесь на сервере, где вы можете создать символическую ссылку (серверы Unix или Windows Vista и более поздние версии с нужными привилегиями).Оставьте на сервере только один подпункт, но трижды выставьте его в
hgweb
конфигурации. Как это:[paths] Project1 = /repos/Project1 Project1/LibrariesSubrepo = /repos/Libraries Project2 = /repos/Project2 Project2/LibrariesSubrepo = /repos/Libraries
Во всех случаях на сервере есть только три репозитория: Project1
, Project2
, а также Libraries
,