Что вы делаете, если файл в TFS заблокирован кем-то другим?
Кто-то покинул организацию, но перед тем, как уйти, заблокировал все файлы по неизвестной причине.
Как вы разблокируете их все, чтобы другие разработчики могли работать?
12 ответов
Для выполнения следующей операции вам необходимо быть администратором проекта, в котором вы хотите отменить регистрацию, или администратором Team Foundation, если вы хотите сделать это во всех проектах.
Если у вас все еще есть имя пользователя, вы можете просто сделать что-то вроде этого:
- Откройте командную строку Visual Studio (Пуск -> Программы -> Microsoft Visual Studio 200X -> Инструменты Visual Studio -> Командная строка Visual Studio 200X)
- Запустите следующую команду:
tf lock / lock: нет /workspace:WorkspaceName;USERNAME /recursive $/
Чтобы получить список рабочих областей для пользователя, просто запустите следующую команду из того же приглашения:
TF рабочие пространства / владелец: имя пользователя
Для получения дополнительных команд, проверьте TF /?
Если разработчик покинул организацию, то лучше всего удалить его рабочие пространства. Это разблокирует файлы для вас, но также освободит некоторые ресурсы на сервере.
Посмотрите следующий пост в блоге, который я написал по этой теме, когда это случилось со мной несколько лет назад.
http://www.woodwardweb.com/vsts/unlocking_files.html
Вы можете удалить рабочее пространство с помощью командной строки (tf.exe) или использовать отличные дополнения TFS от Attrice.
Это был единственный способ решить эту проблему, который включал удаление рабочего пространства пользователя:
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
потому что есть аналогичная команда, которая во множественном числе.
Сначала вам нужно иметь право сделать это. Если у вас есть это, то самое простое - использовать сторонников TFS от attrice http://www.attrice.info/cm/tfs/
Вот объяснение использования разрешений TFS.
Если для разрешения "Разблокировать изменения другого пользователя" установлено значение "Разрешить", необходимо удалить блокировку, удерживаемую другим пользователем.
Мне нужно было добавить /collection:collectionURL, иначе не удалось найти рабочее пространство:
- Элемент списка
tf loc /lock: нет /workspace:WorkspaceName; Имя пользователя /collection:collectionURL
Иногда это маскирует другую проблему с совершенно другим приложением, заблокированным другим пользователем, но вы даже не можете создать новую папку для нового проекта, в который хотите объединиться (цель не разрешит создание и неправильно заявит, что кто-то имеет файл заблокирован по их названию) но потом копаете глубже и виноват другой проект.
Так что проблема может быть в совершенно другом проекте, когда файлы заблокированы кем-то другим.
Лучше удалить рабочее пространство этого пользователя с сервера. пример
Рабочая область tf /delete /server: рабочая область your_tfs_server; имя пользователя
Метод, который сработал для меня, у моей учетной записи есть права администратора в TFS и проекте:
В Visual Studio 2015:
- Перейти в Team Explorer
- Щелкните правой кнопкой мыши свое решение и выберите Открыть в источнике контроля версий.
- Слева щелкните правой кнопкой мыши свое решение
- Выберите Advanced
- Выберите Заблокировать...
- Слева щелкните правой кнопкой мыши свое решение
- Выберите Advanced
- Выберите Разблокировать (теперь вы можете выбрать разблокировку)
Прямо сейчас каждый разработчик может легко зафиксировать свои изменения:)
Попросите системного администратора сбросить пароль пользователя, войти в систему под этим пользователем, разблокировать все файлы...
Я бы подумал, что это решение практически всех вопросов "кого-то, кто больше не в этой организации"...
используя разрешения TFS, откройте командную строку Visual Studio и выполните следующую команду:
tf undo /workspace:workspaceName;DomainName\UserName $/file path in your solution
Используйте это решение как самое последнее средство.
Я использую TFS 2012. Я пошел в базу данных TFS и выполнил следующие запросы. И это сработало! Конечно, будьте очень осторожны при работе с базой данных, создании резервных копий и т. Д.
База данных называется Tfs_<< your_TFS_collection_name >>. Игнорировать базу данных MSSQL Tfs_Configuration. Я не уверен, но если у вас нет базы данных 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>>