2016-10-23 14 views
2

(В настоящее время я фиксирую свои старые хранилища перед публикацией.)Как перезагрузить git-подмодуль, сохраняющий ссылки на подмодуль, фиксируется из репозитория git, содержащего подмодуль?

Я уже знаю, как rewrite commit author e-mail and name in git history.

У меня есть проект git с подмодулями. Я хочу переписать историю этих подмодулей, но, поскольку я ускоряю эти подмодули во время разработки, я хочу изменить ссылки из основного git-репо, указывающего на некоторые из этих подмодулей, для ссылок, указывающих на новые коммиты после подмодуляционной rebase. То есть Мне нужно переустановить god-подмодуль в сочетании с rebasing git-репозиторием, содержащим этот подмодуль. (Извините, слишком длинный текст, я не знаю, как это описать короче.)

Как переписать историю субмодуля git в синхронизации с историей хранилища git, содержащей подмодуль?

ответ

2

Как я уже говорил в «Repository with submodules after rewriting history of submodule», нет простого решения.

Вам придется переписать историю вашего основного репозитория с git filter-branch, ищет коммиты включая gitlink (special entry in the index)

Вам необходимо сначала установить соответствие между SHA1 подмодуля старой истории и в gitlinks, используемые вашей основной репо

cd /submodule/repo/just/rewritten/ 
# the old history is still available in refs/original 
git -C /path/to/rewritten/repo for-each-ref --format="%(refname)" refs/original 

cd /main/repo 
git for-each-ref --contains <SHA1> # SHA being a SHA1 from the old submodule history 

Затем вам нужно будет заменить

git filter-branch --prune-empty --tree-filter 'change_gitlink' 

change_gitlink будет скриптом, который войдет в папку подмодуля (следовательно, --tree-filter, а не --index-filter), проверьте новый SHA1 (из новой истории подмодуля). В ветке фильтра будет зафиксировано новое состояние репо, в том числе новое gitlink (потому что подмодуль был проверен на новом новом SHA1)

+0

индексный фильтр с индексом обновления --cacheinfo должен работать, нет? – jthill

+0

@j это возможно, да. Он должен разрешить оформление подмодуля. – VonC

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

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