Как устранить несоответствия, найденные 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 для каталогов содержит перед копированием файлов. Затем я передал файлы для исправления. Кажется, сработало, но это что-то вроде хака.

Другие вопросы по тегам