У меня есть два SVN-проекта, которые используются в другом репозитории SVN с использованием svn:externals.SVN: эквивалент externals в Git?
Как я могу иметь такую же структуру макета репозитория в Git?
У меня есть два SVN-проекта, которые используются в другом репозитории SVN с использованием svn:externals.SVN: эквивалент externals в Git?
Как я могу иметь такую же структуру макета репозитория в Git?
Git имеет два подхода, аналогичные, но не совсем эквивалентные СВНА: Externals:
Subtree сливается вставить код внешнего проекта в отдельный подкаталог внутри вашей репо. У этого есть detailed process to set up, а затем он очень прост для других пользователей, поскольку он автоматически включается, когда репозиторий проверен или клонирован. Это может быть удобным способом включения зависимости в ваш проект.
Легко вытащить изменения из другого проекта, но сложно представить изменения обратно. И если другой проект должен слиться с вашим кодом, истории проектов объединяются, и два проекта фактически становятся единым целым.
Git submodules (manual) ссылку на конкретный совершить в хранилище другого проекта, так же, как SVN: внешние с -r
аргументом. Субмодули просты в настройке, но все пользователи должны управлять подмодулями, которые не включаются автоматически в кассы (или клоны).
Несмотря на то, что легко отправить изменения обратно в другой проект, это может вызвать проблемы, если репо изменилось. Поэтому, как правило, нецелесообразно передавать изменения обратно в проект, который находится в активной разработке.
FYI, теперь можно указать конкретные изменения с помощью svn: externals сейчас (с 1.5 или 1.6 я верю?) –
Поскольку ссылки в ответе устарели, вот некоторые свежие: [Subtree Merge @ Github: help] (http://help.github.com/subtree-merge/); [Работа с субмодулями @ Github: help] (http://help.github.com/submodules/); [Руководство пользователя Submodules @ Git] (http://schacon.github.com/git/user-manual.html#submodules) – Bart
FYI, git-подмодули могут автоматически управляться и выполняться. git создает файл .gitmodules, который может/должен выполняться так же, как и файл .gitignore. См. [Http://git-scm.com/book/en/Git-Tools-Submodules] для получения дополнительной информации. – mikijov
Существует не точный аналог, но вот пара обходные:
Вы должны смотреть в Git submodules. Это должно позволить почти точно, что вы ищете.
@JonathonReinhart - я сделал редактирование – Sonny
Как я упоминаю в «Git submodule new version update», вы можете достичь той же функции внешнего SVN с Git 1.8.2 подмодулями:
git config -f .gitmodules submodule.<path>.branch <branch>
Это достаточно для подмодуля следовать ветви (как в LATEST фиксации удаленной ветви подмодуля upstream repo). Все, что вам нужно сделать, это:
git submodule update --remote
Это обновит подмодуль.
Подробнее ... «git submodule
tracking latest».
Чтобы преобразовать существующий подмодуль в один отслеживания филиала: увидеть все действия, описанные в «Git submodules: Specify a branch/tag».
Можете ли вы выполнить частичную проверку, например, с помощью 'svn: externals'? – nowox
@nowox Да, у вас может быть разреженная проверка (git 1.7+ https://stackoverflow.com/a/2372044/6309), связанная с подмодулями (https://stackoverflow.com/a/17693008/6309) – VonC
, к сожалению, все редкие ответы, связанные с проверкой, никогда не приводят никакого примера :(Я попытаюсь написать пример Gist для этого ... – nowox
Для последней версии Git я бы посоветовал прочитать около Git submodules в официальной документации Git.
У кого-то есть новый ответ на этот вопрос за последние 4 года, или это мир git сегодня? – DougW
@ DougW Да, у меня есть [новый ответ ниже] (http://stackoverflow.com/a/18088319/6309): 'git submodule' теперь может эмулировать' svn: external' (с марта 2013 года). – VonC