Есть ли альтернатива GIT для SVN Externals? - PullRequest
1 голос
/ 13 июля 2011

В настоящее время я использую SVN для управления конфигурациями сервера jboss, и мне нужно иметь несколько копий одного и того же подкаталога в каждой рабочей копии, но ссылаясь на один и тот же каталог на сервере, чтобы при изменении какого-либо файла каждая копия получала обновить.

Пример:

  • / сервер / bin (общий доступ)
  • / сервер / узел-01 (копия репозитория / сервер / узел)
  • / сервер / узел-02 (копия репозитория / сервер / узел)

Можно ли добиться того же, используя git? Я не смог найти однозначного ответа на подобные вопросы.

1 Ответ

2 голосов
/ 13 июля 2011

Лучший пример, который я знаю, это git-submodule [1].

Вы можете определить под-репозитории и иметь «родительский» репозиторий, концептуально содержащий хэш, определяющий точную ревизию каждого под-репозитория..

Когда ваш HEAD перемещается в под-репозиторий, "git status" и "git diff" сообщат об этом как об изменении хэша в родительском репо.

К сожалению, подмодули git являютсяbit clunky:

  • Когда вы извлекаете родительское репо, оно не будет автоматически обновлять дочерние репо.Вместо этого дочерние репозитории будут выглядеть так, как будто вы внесли локальные изменения (которые возвращают их новую позицию обратно туда, где они были).

  • Вы должны явно вызвать «git submodule update»каждый раз (или, конечно, сценарий) после извлечения / объединения родительского репо.

Это также означает, что «git rebase» и другие операции над родителем не работаютпри наличии подмодулей.Но у вас здесь есть детальный контроль над поведением, поэтому вы ничего не можете обойти.

[1] http://kernel.org/pub/software/scm/git/docs/git-submodule.html

...