Основные сведения о типах блокировки
С помощью команды lock можно временно запретить изменение определенного файла или папки на сервере управления версиями. Это может оказаться полезным, если необходимо изменить элемент в локальной рабочей области, а затем вернуть его на сервер без риска возникновения конфликтов слияния. Одновременно владеть блокировкой того или иного файла или папки может только один пользователь. Если требуется запретить доступ к элементу на постоянной основе, используется Permission Command.
Типы блокировки
Сервер Team Foundation поддерживает блокировки двух типов: блокировки возврата и блокировки извлечения.
Блокировка возврата
Блокировка возврата имеет меньшие ограничения, чем блокировка извлечения. При применении блокировки возврата пользователи могут продолжать выполнять локальные изменения элемента в других рабочих областях. Но эти изменения невозможно будет вернуть на сервер, пока блокировка не будет явным образом снята с элемента, либо пока она не будет снята неявным образом путем возврата изменений.
Блокировка извлечения
Чаще всего в Visual Studio Team Foundation Server 2012 блокировки извлечения не оказывают никакого влияния, поскольку здесь используются локальные рабочие области (см. раздел Выбор локальной или серверной рабочей области). В частности, для блокировок извлечения действуют следующие правила:
Они не применяются, поскольку другие пользователи могут использовать локальные рабочие области.
Они недоступны при использовании локальной рабочей области.
Они отключены, если член группы безопасности "Администраторы" для коллекции командного проекта включил асинхронное извлечение для рабочих областей сервера команды.
Блокировка извлечения не позволяет пользователям рабочей области сервера извлекать элементы и вносить в них изменения в локальных рабочих областях. Блокировку извлечения невозможно применять к элементам, для которых существуют ожидающие изменения в рабочих областях пользователей, отличных от пользователя, применяющего блокировку.
Принцип работы блокировки
Если при блокировке файл извлекается, в запись о его извлечении заносится новый тип блокировки. Если файлы извлечены не были, в набор отложенных изменений рабочей области добавляется изменение "lock". В отличие от команды извлечения, при выполнении команды блокировки файл не становится доступным для изменения автоматически.
Сервер Team Foundation автоматически снимает блокировку с элемента при возврате ожидающих изменений в рабочей области, в которой он был заблокирован. Блокировка также снимается в том случае, когда пользователь отменяет ожидающие изменения для файла с помощью команды undo.
Блокировки в файлах являются неявно рекурсивными. При блокировке папки нет необходимости блокировать содержащиеся в ней файлы до тех пор, пока к файлу в папке, имеющем блокировку возврата, не потребуется применить более строгую блокировку извлечения.
Одновременно владеть блокировкой того или иного файла или папки может только один пользователь. Для получения информации о том, какие файлы на сервере Team Foundation (подсистема контроля версий) заблокированы и кем они заблокированы, служит Команда Status.
Блокировку можно применить в рамках отдельной операции или совместно с другими операциями, такими как переименование, извлечение, удаление, отмена удаления, слияние, ветвление и добавление в систему управления версиями. Если блокировка применяется одновременно с операциями добавления в систему управления версиями или ветвления, сервер Team Foundation связывает блокировку с серверным путем, по которому будет создан новый элемент. Это не позволит другому пользователю добавить новый файл или создать ветвь старого по тому же пути. Если блокировка применяется одновременно с командой переименования, блокируется как новый, так и старый путь.
Разблокирование элемента
Разблокировать элемент можно явным образом с помощью команды unlock или неявно во время возврата. При возврате ожидающих изменений заблокированного элемента сервер Team Foundation снимает все блокировки.
Примечание
По умолчанию разрешение UnlockOther дается только администраторам.Пользователь, обладающий разрешением UnlockOther, может снимать блокировку с любого элемента в рабочей области другого пользователя из командной строки (Lock Command).
См. также
Основные понятия
Создание рабочих областей и работа в них
Другие ресурсы
Работа с блокировками системы управления версиями
Разрешение конфликтов Team Foundation (подсистема контроля версий)