Что вы делаете, если файл в TFS заблокирован кем-то другим? - PullRequest
57 голосов
/ 06 ноября 2008

Кто-то покинул организацию, но перед тем как уйти, он заблокировал все файлы по неизвестной причине.

Как разблокировать их все, чтобы другие разработчики могли работать?

Ответы [ 11 ]

55 голосов
/ 06 ноября 2008

Для выполнения следующей операции вам необходимо быть администратором проекта, в котором вы хотите отменить регистрацию, или администратором Team Foundation, если вы хотите сделать это во всех проектах.

Если у вас все еще есть имя пользователя, вы можете просто сделать что-то вроде этого:

  • Откройте командную строку Visual Studio (Пуск -> Программы -> Microsoft Visual Studio 200X -> Инструменты Visual Studio -> Командная строка Visual Studio 200X)
  • Запустите следующую команду:

блокировка / блокировка: нет / Рабочее пространство: WorkspaceName; ИМЯ_ПОЛЬЗОВАТЕЛЬ / рекурсивный $ /

Чтобы получить список рабочих пространств для пользователя, просто запустите следующую команду из того же приглашения:

Рабочие пространства tf / владелец: имя пользователя

Для получения дополнительных команд, проверьте TF /?

33 голосов
/ 06 ноября 2008

Если разработчик покинул организацию, то лучше всего удалить его рабочие области. Это разблокирует файлы для вас, но также освободит некоторые ресурсы на сервере.

См. Следующий пост в блоге, который я написал по этой теме, когда это случилось со мной несколько лет назад.

http://www.woodwardweb.com/vsts/unlocking_files.html

Вы можете удалить рабочее пространство с помощью командной строки (tf.exe) или использовать превосходные TFS Sidekicks из Attrice.

7 голосов
/ 30 августа 2012

Это был единственный способ решить эту проблему, который включал удаление рабочего пространства пользователя:

http://2toad.com/Blog/2012/1/27/how-to-manage-tfs-workspaces

Если в сообщении об ошибке указано «Элемент $ / ... заблокирован для извлечения someUser: 1 в рабочей области someMachine123». тогда я использую команду:

tf workspace /delete /server:http://machinename:8080/tfs/DefaultCollection someMachine123;someUser:1

Между URL-адресом коллекции и someMachine123;someUser:1 есть только один пробел.

Обратите внимание, что я обратил внимание на тот факт, что в сообщении об ошибке пользователь упоминается как someUser:1, поэтому я имитировал это в команде. Недостаточно просто запустить команду только с someUser. Я не уверен, что означает: 1, но, суть в том, имитируйте сообщение об ошибке.

Обратите внимание, что на сервере должен быть указан полный путь к коллекции, который можно найти, перейдя в Консоль администрирования Team Foundation Server-> Уровень приложений-> Коллекции командного проекта, в нижней панели будет отображен URL-адрес выбранной коллекции. в верхней панели.

У меня также была проблема, потому что я случайно попытался использовать множественное число workspaces вместо просто workspace, потому что есть аналогичная команда, которая во множественном числе.

6 голосов
/ 06 ноября 2008

Сначала вам нужно иметь право сделать это. Если у вас есть это самое простое, это использовать подручные TFS от attrice http://www.attrice.info/cm/tfs/

1 голос
/ 17 сентября 2014

Мне нужно было добавить / collection: collectionURL, иначе не удалось найти рабочее пространство:

  • Элемент списка

tf loc / lock: нет / workspace: WorkspaceName; UserName / collection: collectionURL

0 голосов
/ 05 марта 2019

Метод, который работал для меня, у моей учетной записи есть разрешение администратора на TFS и проект:

В Visual studio 2015:

  1. Перейти к Team Explorer
  2. Щелкните правой кнопкой мыши по вашему решению и выберите Открыть в управлении исходным кодом. Exporer
  3. Слева щелкните правой кнопкой мыши на вашем решении
  4. Выберите Дополнительно
  5. Выберите Блокировка ...
  6. Слева щелкните правой кнопкой мыши на вашем решении
  7. Выберите Дополнительно
  8. Выберите Разблокировать (Теперь вы можете выбрать разблокировку)

Прямо сейчас, каждый разработчик может легко зафиксировать свои изменения:)

0 голосов
/ 21 апреля 2016

Используйте это решение как самое последнее средство .

Я использую TFS 2012. Я зашел в базу данных TFS и выполнил следующие запросы. И это сработало! Конечно, будьте очень осторожны при работе с базой данных, создании резервных копий и т. Д.

База данных называется Tfs _ << your_TFS_collection_name >> . Игнорируйте базу данных Tfs_Configuration MSSQL. Не уверен, но если у вас нет базы данных Tfs _ << your_TFS_collection_name >> , настройки могут быть в базе данных Tfs_DefaultCollection . Блокировки хранятся в tbl_PendingChange.LockStatus .

/*Find correct row*/
SELECT LockStatus, PendingChangeId, *
FROM tbl_PendingChange
WHERE TargetServerItem like '%<<fileName>>%'

/*Set lock status to NULL (mine was set to 2 initially)*/
UPDATE tbl_PendingChange SET LockStatus = NULL WHERE
TargetServerItem like '%<fileName>>%'
AND PendingChangeId = <<PendingChangeId from above>>
0 голосов
/ 21 января 2016

Иногда это маскирует другую проблему с совершенно другим приложением, заблокированным другим пользователем, но вы даже не можете создать новую папку для нового проекта, в который вы хотите объединиться (цель не позволит создать и неправильно заявить, что у кого-то есть файл, заблокированный в их имени), но затем вы копаете глубже, и другой проект является виновником.

Так что проблема может быть в совершенно другом проекте, когда файлы заблокированы кем-то другим.

0 голосов
/ 23 июля 2014

Лучше удалить рабочее пространство этого пользователя с сервера. Пример

tf workspace / delete / server: your_tfs_server workspace; имя пользователя

0 голосов
/ 06 ноября 2008

Попросите системного администратора сбросить пароль пользователя, войти в систему под этим пользователем, разблокировать все файлы ...

Я бы подумал, что это решение практически всех вопросов «тех, кто больше не в этой организации» ...

...