git-tf сообщает мне "Не удалось заблокировать" при регистрации; как я могу это исправить?

Я использую git-tf для продвижения в проект TFS. Иногда, когда я пытаюсь проверить один или несколько коммитов в TFS, я получаю сообщение, подобное этому:

Подключение к TFS...
Регистрация в $/MyProject: 0%
git-tf: не удалось заблокировать $/MyProject

Что это значит? Что удерживает меня от блокировки? И как я могу это исправить?

1 ответ

Решение

Почему так происходит

При стандартном использовании TFS вы проверяете только один коммит за раз. Но с Git вы можете получить серию коммитов, которые вы нажимаете одновременно.

Из-за этого git-tf стремится сохранить ваш набор коммитов атомарным. Если кто-то регистрируется во время регистрации, история может запутаться; это не будет объединено должным образом.

Чтобы предотвратить это, git-tf временно блокирует все дерево исходных текстов во время регистрации. Однако он не может этого сделать, если кто-то уже заблокировал части исходного дерева.

Как не исправить это

Вы увидите аргумент --no-lock, рекомендуемый в некоторых местах:

git tf checkin --no-lock

Это не хорошее решение. Он игнорирует потенциальную проблему скремблированной истории вместо ее решения.

Как это исправить

  1. В зависимости от используемой версии TFS загрузите и установите соответствующую версию TFS Sidekicks.
  2. Запустите TFS Sidekicks.
  3. Перейдите в Инструменты> Статус Sidekick.
  4. Очистите поле Имя пользователя.
  5. Установите диапазон дат, достаточно широкий, чтобы охватить всю историю вашего проекта. Вы можете отфильтровать поле Имя проекта, если хотите.
  6. Нажмите Поиск. Вы получите список всех извлеченных файлов в проекте.
  7. Нажмите на заголовок столбца Тип блокировки, чтобы отсортировать по этому столбцу. Большинство файлов, вероятно, будет иметь значение "Нет" в этом столбце. Вы ищете любые файлы, которые имеют "Заблокированные" вместо этого. Это чаще всего встречается в двоичных файлах, потому что их нельзя объединить. По умолчанию TFS блокирует их только после извлечения.
  8. Как только вы узнаете, какие файлы заблокированы, поговорите с человеком, который их заблокировал, и договоритесь о его разблокировке. Если человек там больше не работает, вы можете попросить администратора TFS просто снять блокировки.
  9. Когда все блокировки сняты, снова нажмите "Поиск" в TFS Sidekicks, и вы увидите, что все файлы имеют тип блокировки "Нет". Теперь попробуйте выполнить git tf checkin снова, и на этот раз он должен работать правильно.
Другие вопросы по тегам