Можно ли перенести историю из репозитория TFVC в репозиторий Git ПОСЛЕ того, как код уже перемещен? - PullRequest
0 голосов
/ 24 июня 2019

В прошлом году код из TFS TFVC-репозитория был скопирован в TFS Git-репозиторий без History.Это была просто копия / вставка файлов в новый репозиторий git.Можно ли теперь перенести историю из старого репозитория TFVC?

1 Ответ

0 голосов
/ 24 июня 2019

Это возможно, но это зависит от ваших ожиданий.

Что нужно сделать:

  1. Перенос истории в новый репозиторий git (задача не из легких, но я буду признан, что вам это удастся)

  2. Добавьте этот новый репозиторий как удаленный в репозиторий, содержащий уже новейшую историю (git remote add ...) и git fetch --all

  3. Создайте локальную ветвь (и) на последнем коммите и отправьте ее в ваш центральный репозиторий.

  4. Теперь вам придется играть с git replace --graft, чтобы связать старую историю с новой.

Из документа:

git replace --graft <commit> [<parent>…​]

Создать коммит для прививки. Новый коммит создается с тем же содержимым, что и за исключением того, что его родители будут […] вместо родителей.

Запустите команду:

git replace --graft <sha1_first_commit_new_history> <sha1_last_commit_old_history>

Здесь у вас есть 2 варианта:

  • запускайте эту команду во всех уже существующих репозиториях и запускайте эту команду каждый раз, когда вы клонируете репозиторий.

  • сделать трансплантат постоянным, но с той обратной стороной, что весь sha1 новой истории изменится. Вы должны проверить, приемлемо ли это для вас.

Если это так:

  1. git filter-branch -- --all, чтобы сделать его постоянным (после этого проверьте результат и удалите резервные ветви веток фильтра, если все в порядке)
  2. git push --force -- --all (обновит центральный удаленный репозиторий)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...