2013-09-16 3 views
0

Так моя структура выглядит следующим образом для репо:Git подмодуль и ветви

--project - master 
    --project - beta 
    --project - dev1.0 
    --project - dev1.1 
    --project - dev1.2 

В настоящее время я делаю git branch и я на dev1.2, который хорошо, я хочу, чтобы добавить ссылку на проект, начиная с 1.2, а затем " объединить "все это обратно к мастеру (или наоборот, что когда-либо лучше), проблема заключается в том, according to this book, что я не думаю, что понимаю это достаточно.

Могу ли я просто сделать, на dev1.2 ветви:

git add submodule --link-- name затем сделать git commit -a -m "some message" и git checkout dev1.1 затем git cherry-pick #commit where I added the reference project и, наконец git submodule udpate ??

Это, по существу, говорит: на dev 1.2 добавить новую ссылку, зафиксировать ее - добавить ссылку - перейти к 1.1, где нет ссылки, вишня выбрать фиксацию, чтобы добавить ссылку, а затем обновить подмодуль, чтобы теперь ссылка как на 1.2, так и на 1.1 ..

ответ

0

Управление подмодулями может стать очень грязным, быстрым. Я бы рекомендовал вместо этого использовать git-repo. Он был создан проектом с открытым исходным кодом Android для удовлетворения потребностей Android, но это очень общий механизм, который может использоваться любым проектом. Он гораздо более универсален по сравнению с подмодулями git и отлично сочетается с gerrit code review (однако это необязательно).

git-repo позволяет использовать как модель «track by commit sha» (эквивалентно git-подмодулю), так и модель «track by branch name» (невозможно с git-подмодулем) или любую их комбинацию.

Существует только один недостаток репо - он явно не поддерживает Windows (но отлично работает на Linux, Mac и большинстве POSIX-систем). Исходная причина, по которой она не работала в Windows, заключалась в том, что она широко использует символические ссылки, но Windows XP их не поддерживает. Поскольку Windows 7+ поддерживает символические ссылки, должно быть возможно исправить git-repo для работы в Windows, но, к сожалению, никто не потрудился это сделать.

+0

Это прекрасно, мой код выполняется в Linux, слава богу - смерть для окон. Таким образом, это позволяет мне «принести» другой репозиторий в мою базу кода и использовать его в качестве «ссылки», могу ли я отправить этот другой проект с этим или все это «вычеркнуто», поэтому, если я попытаюсь отправить его, это будет похоже на «ваши отсутствующие эти файлы ...» (это суперпроект с использованием субпроекта) – LogicLooking

Смежные вопросы