Основные сведения о типах блокировки
С помощью команды 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). |