Как устранить несоответствия, найденные Git-TFS, проверьте
Git-TFS имеет команду verify, которая описывается в справке следующим образом: "Команда verify помогает выявлять неточности извлечения, клонирования или быстрого клонирования из TFS". У меня есть собственный репозиторий, который я перевожу с TFS на Git. Бег git tfs verify
показал, что в моем репозитории Git отсутствует значительное количество файлов, которые существуют в TFS, и это сразу после выполнения синхронизации. Это случилось однажды, и я уничтожил весь репозиторий и начал заново, но теперь у меня снова возникла та же проблема. Я успешно клонировал этот репозиторий с Git-TFS раньше (до того, как мы начали мигрировать в Git, когда я просто использовал его локально), поэтому я знаю, что он может быть успешным, но я бы предпочел не взрывать весь репозиторий и начать заново.
Существует ли автоматический способ исправления различий, показанных командой verify, без повторного клонирования всего хранилища? Я мог бы проверить проект в TFS и скопировать все файлы вручную, если это необходимо, но я надеюсь на лучший путь.
1 ответ
Я надеялся на какую-то команду, как git tfs repair
соответствовать команде проверки. Однако вместо того, чтобы найти что-то подобное, я смог решить эту проблему двумя различными способами. У меня было два репозитория, которые были испорчены, и в одном из них у меня была другая копия, которая была хороша (я успешно клонировал ее для личного использования Git, прежде чем отдел начал переходить с TFS на Git). Другой, у меня не было ранее существующей копии, и каждый раз, когда я пытаюсь ее клонировать, у меня возникают одни и те же проблемы.
Два ранее решения работали, чтобы исправить текущее состояние репо, но, конечно, не рассказали правду об истории. Было бы хорошо, если бы был какой-то возможный способ сделать что-то вроде git tfs repair
,
Когда у вас уже есть другой репо без расхождений
Я добавил свое хорошее репо в качестве удаленного к репо, которое я пытался исправить:
git remote add goodclone C:/path/to/good/clone
Затем я извлек из этого пульта:
git fetch goodclone
Git выдал предупреждение о том, что ни один из коммитов не был одинаковым (это функция их клонирования из TFS через Git-TFS в разное время). Я знал, что это правда, так что все в порядке. Это просто означало, что клон занял больше времени.
Я проверил ветку от master
делать работу на.
git checkout -b repair
Я также проверил ветку с пульта хорошего репо, для хорошей меры:
git checkout -b goodclone-master goodclone/master
Я тогда слил:
git checkout repair
git merge --squash goodclone-master
Я должен был исправить пару вещей, затем я совершил. Я снова запустил процесс синхронизации TFS-Git, переключился на мастер и вытащил последние изменения, перебазировал исправленную ветвь на мастере, слил ее в мастер и нажал.
Насколько я могу судить, сейчас все хорошо!
Когда у вас нет другого репо без расхождений
Я клонировал репозиторий через TFS, а затем использовал Vim для создания сценария из выходных данных команды verify для копирования файлов из репозитория TFS. В сценарии я должен был сделать mkdir -p
для каталогов содержит перед копированием файлов. Затем я передал файлы для исправления. Кажется, сработало, но это что-то вроде хака.