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
Это не хорошее решение. Он игнорирует потенциальную проблему скремблированной истории вместо ее решения.
Как это исправить
- В зависимости от используемой версии TFS загрузите и установите соответствующую версию TFS Sidekicks.
- Запустите TFS Sidekicks.
- Перейдите в Инструменты> Статус Sidekick.
- Очистите поле Имя пользователя.
- Установите диапазон дат, достаточно широкий, чтобы охватить всю историю вашего проекта. Вы можете отфильтровать поле Имя проекта, если хотите.
- Нажмите Поиск. Вы получите список всех извлеченных файлов в проекте.
- Нажмите на заголовок столбца Тип блокировки, чтобы отсортировать по этому столбцу. Большинство файлов, вероятно, будет иметь значение "Нет" в этом столбце. Вы ищете любые файлы, которые имеют "Заблокированные" вместо этого. Это чаще всего встречается в двоичных файлах, потому что их нельзя объединить. По умолчанию TFS блокирует их только после извлечения.
- Как только вы узнаете, какие файлы заблокированы, поговорите с человеком, который их заблокировал, и договоритесь о его разблокировке. Если человек там больше не работает, вы можете попросить администратора TFS просто снять блокировки.
- Когда все блокировки сняты, снова нажмите "Поиск" в TFS Sidekicks, и вы увидите, что все файлы имеют тип блокировки "Нет". Теперь попробуйте выполнить git tf checkin снова, и на этот раз он должен работать правильно.