2016-12-15 5 views
0

У меня есть проект git, который в настоящее время растет, и несколько частей начинают создавать проекты сами по себе.Сегмент git-проект в подмодулях

Итак, я хочу создать для них подмодули, но сохранить историю файлов. Были ходы между различными папками (например, от partThatIsNotItsOwnProject к partThatIsItsOwnProject, и я хотел бы иметь историю для этого движения тоже.)

До:

/.git 
/someFiles 
/partThatIsItsOwnProject 
--/subdirectory 
/partThatIsNotItsOwnProject 
--/subdirectory 

Я хотел бы иметь:

/.git 
/someFiles 
/partThatIsItsOwnProject 
--/.git 
--/subdirectory 
/partThatIsNotItsOwnProject 
--/subdirectory 

Итак, я догадался, что git subtree сделает это, но, похоже, сохраняет исходный репозиторий git и отображает только его часть. git submodule кажется целью этой установки, но как мне сделать переход?

ответ

1

Для этого вам нужно будет переписать историю всего репозитория, чтобы исключить все, что не связано с каталогом, который вы хотите разместить в отдельном репо. Для этого полезна команда git filter-branch. Вы можете найти пример скрипта, который делает это на [0]. Обратите внимание, что вам может потребоваться настроить его для ваших нужд.

В общем, git filter-branch [1] позволяет вам переписать историю Git, применяя ваши фильтры к каждой фиксации в репо последовательно. Обратите внимание, что хотя использование --tree-filter - это самый простой способ добиться того, что вам нужно, он очень медленный, так как он делает правильную проверку каждого фиксации на этом пути, поэтому лучше редактировать индекс с --index-filter.

[0] https://github.com/openstack/oslo.tools/blob/master/filter_git_history.sh

[1] https://git-scm.com/docs/git-filter-branch

1

Вилка вы главный мерзавец, а затем переименовать раздвоенный в "partThatIsItsOwnProject", а затем удалить все, что не является частью этого "подкаталог". Затем добавьте разветвленный git как подмодуль к вашему основному git, вся история сохранена.

Повторите все поддиры, которые вы хотели бы пробить от мастера git.

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

  • Нет связанных вопросов^_^