5 декабря 2012 г.

Как разблокировать файлы, заблокированные кем-то в TFS Source Control

Есть код, который хранится в системе управления версиями (source control) на Team Foundation Server (TFS). Я работаю с ним с разных машин (и соответственно, с разных точек земного шара :)).

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

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

Оказывается, есть возможность снять такую блокировку файлов или отменить извлечение.


Средствами в пользовательском интерфейсе клиента TFS вы это не сделаете, но через командную строку сможете.

Для этого есть две команды:
  • вы можете либо снять блокировку (tf lock /unlock:none),
  • либо вообще отменить извлечение файлов (tf undo)
При этом вам нужно знать:
  • путь к файлу в системе управления версиями (что-то вроде $/MyProject/MyFile.ext)
  • адрес вашего сервера TFS (что-то вроде, http://<имя_сервера>:8080 или http://<имя_сервера>:8080/tfs). Указывается с помощью параметра /s:.
  • рабочее пространство, к которому принадлежит компьютер, с которого вы или кто-то другой заблокировали файлы (это получается удаленный ПК)
  • пользователя и домен, к которому вы или тот другой, кто заблокировал файлы, принадлежит
Узнать рабочее пространство и имя пользователя с доменом можно в "Свойствах" заблокированного файла в Source Code Explorer'е. (В системе управления версиями - правой кнопкой мыши, Properties, затем вкладка Status.).

Они указываются с помощью параметра /workspace:. Рабочее пространство отделяется от имя пользователя с доменом - точкой с запятой. (Если в названии рабочего пространства есть пробелы, его еще нужно взять в кавычки.)

Давайте для примера отменим (undo) извлечение файла $/MyProject/MyFile.ext. Адрес сервера TFS - http://myserver.com:8080/tfs, рабочее пространство - "OfficeSpace", ваше имя пользователя - "vpupkin" в домене "BB".

tf undo $/MyProject/MyFile.ext /workspace:OfficeSpace;BB\vpupkin /s:http://myserver.com:8080/tfs

Как видите, ничего сложного. Зато как эффективно :)

1 комментарий: