Кажется, @nethergranite разобрался. Git-subtree может не иметь возможности отслеживать отдельные файлы для git-subtree --split
, по крайней мере, в некоторых существующих версиях.
Я обнаружил аналогичную ошибку из git-subtree при попытке восстановить некоторый удаленный код из каталога GNU Emacs 'lisp/obsolete', а именно один scribe.el
. Когда я запустил git-subtree -P <file-pathname> [other-args]
, Git также начал выдавать сообщение assertion failed
.
В качестве альтернативы, используя синтаксис, например
git subtree -b split_${changest_ID} --annotate="split lisp/obsolete:" -P lisp/obsolete/
... затем он работает нормально, используя относительный каталог в качестве префикса для git-subtree(1)
Для целей администратора changest_ID можно получить, например, с помощью
git log --pretty=short --abbrev-commit -n1 -- relpath/to/subdir/
... кроме того, синтаксический анализ ссылки фиксации (ID) с помощью текстовых инструментов, например
git log --pretty=short --abbrev-commit -n1 -- relpath/to/subdir/ | head -n1 | awk '{print $2}'
Производное имя ветки — split_${changest_ID} — затем можно использовать для отправки поддерева каталога в локальный голый репозиторий git, из которого затем можно будет управлять им независимо от исходного исходного дерева… условия лицензии/привязки/редистинга позволяет. Дополнительная документация может быть доступна на странице руководства git-subtree(1).
Помимо всего этого, кажется, что git-subtree может просто понадобиться префикс каталога, а не отдельный файл в качестве префикса - в ожидании каких-либо изменений исходного кода как такового, если git-subtree когда-либо теоретически может создать поддерево из одного префикса файла , поскольку git управляет своим внутренним состоянием в репозитории Git.
person
Sean Champ
schedule
06.12.2018