Клон Git-tfs зависает при загрузке с зависимого удаленного TFS - бесконечный цикл?

Я пытаюсь клонировать весь репозиторий TFVC, размещенный в Visual Studio Online, с ветвями, используя следующую команду:

git tfs clone --with-branches --export-work-item-mapping="{путь к файлу сопоставления}" https://{имя проекта}.visualstudio. com/DefaultCollection "$/{проект}/{ветвь}"

До сих пор это работало для меня с несколькими проектами, но в прошлые выходные я столкнулся с проблемой...

Начало процесса выглядит так же, как и для других проектов, но примерно через 3 часа вывод консоли продолжает повторять следующие две строки каждые 20 минут или около того:

=> Working on TFS branch : $/{source project}/{main branch}
    Fetching from dependent TFS remote '{branch}'...

Я позволил ему делать это примерно 40 часов, и он просто продолжал делать то же самое.

Я повторно запустил клон с параметром --debug, и последняя строка для вывода, прежде чем он просто зависнет, выглядит так:

get [c4002]$/{project}/{branch}/{file location}/{file name with extension}

Я не вижу ничего особенного в этом файле, но глядя на набор изменений 4002, я вижу, что там был применен source rename. Я видел сообщения о проблемах, связанных с переименованиями с помощью git tfs, но, похоже, все они решаются в соответствии с потоками github.

Кто-нибудь сталкивался с этим? Ошибка не выводится, просто повторяется снова и снова...

Версия git tfs: 0.23.0.0 (клиентская библиотека TFS 12.0.0.0(MS)) (64-разрядная версия)

git версии 1.9.5.msysgit.1


person How 'bout a Fresca    schedule 09.11.2015    source источник


Ответы (2)


Я не вижу ничего особенного в этом файле, но, глядя на набор изменений 4002, я вижу, что там было применено переименование исходного кода. Я видел сообщения о проблемах, связанных с переименованиями с помощью git tfs, но, похоже, все они решаются в соответствии с потоками github.

Действительно, я добавил поддержку переименования в git-tfs, но кажется, что сценарий (я точно не знаю, какой именно) переименования плохо поддерживается :-(

Плохая новость заключается в том, что я не знаю, как это воспроизвести, и у меня нет ни времени, ни желания тратить на это время (для других, потому что это такая боль, чтобы понять и поддержать TFVC!)

Не так уж плохая новость заключается в том, что вы можете:

  • либо клонировать после неудачного набора изменений, используя параметр «-c»
  • сложно и не проверено: быстро клонируйте сбойный набор изменений в другой репозиторий, загрузите его в текущий репозиторий, используйте «graft» или «git replace» и «filter-branch», чтобы исправить историю, и продолжите с «git tfs fetch». Тяжело, скучно, долго, но должно работать.
person Philippe    schedule 09.11.2015

Подтверждаю, что вариант "сложный и не проверенный" на самом деле не такой уж и сложный и тем более реально проверенный.

Когда git-tfs зависнет, просто остановите его с помощью Ctrl-C, перейдите в новую папку и продолжите клонирование из магистрали, используя параметр «-c».

Когда клон будет готов, вам просто нужно связать репозитории вместе, используя приведенные здесь инструкции: other-one">Как перебазировать один репозиторий Git на другой?

Легко и проверено! Конец связи!

person xJom    schedule 20.02.2016
comment
Я использовал git-tfs версии 0.24.2.0 и git версии 2.6.4 (оба 64-разрядные). И я имею в виду второе решение, предложенное @Philippe - person xJom; 20.02.2016