Приложение F. Подробности реализации

Содержание

Пометки на значках

Это приложение содержит более подробное описание реализации некоторых возможностей TortoiseSVN.

Пометки на значках

Каждому файлу и папке соответствует значение статуса Subversion, сообщаемое библиотекой Subversion. В клиенте командной строки статус обозначается однобуквенным кодом, но в TortoiseSVN они показываются графически, в виде пометок на значках. Поскольку количество пометок сильно ограничено, каждая пометка может представлять один из нескольких значений статуса.

Пометка Конфликтующее применяется для обозначения состояния конфликта, в котором обновление или переключение привело к конфликту между локальными изменениями и изменениями, полученными из хранилища. Она также используется для обозначения мешающего состояния, которое может возникнуть при невозможности завершения операции.

Пометка Изменённое обозначает состояние изменено (вы сделали локальные изменения), состояние слито (изменения из хранилища были слиты с локальными), и состояние замещён (файл был удалён и заменён другим, отличающимся файлом с таким же именем).

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

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

Пометка В Subversion применяется для обозначения элемента в нормальном состоянии, а также используется для версированного элемента, чьё состояние пока неизвестно. Поскольку TortoiseSVN использует фоновый кэширующий процесс для получения статуса, может потребоваться несколько секунд для обновления пометки.

Оверлейный значок Необходима блокировка обозначает, что установлено свойство svn:needs-lock.

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

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

Пометка Неверсированное используется просто для обозначения элемента в неверсированном состоянии. Это элемент, располагающийся в версированной папке, но в то же время сам не находящийся под управлением версиями. Это необязательная пометка.

Если элемент имеет статус Subversion none (элемент вне рабочей копии), то пометка не показывается. Если вы отключили пометки Игнорируемое и Неверсированное, то и для этих файлов никаких пометок показано не будет.

У элемента может быть только одно значение статуса Subversion. Например, файл может быть изменён локально и в то же время помечен для удаления. Subversion вернёт единственное значение статуса - в данном случае удалён. Эти приоритеты определены внутри самой Subversion.

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

В действительности, вы можете обнаружить, что не все из этих значков используются в вашей системе. Это потому, что количество разрешенных оверлейных значков в Windows ограничено 15. Windows использует 4 из них, а остальные 11 могут быть использованы другими приложениями. Если больше нет свободных слотов для оверлеев, то TortoiseSVN старается быть Good Citizen (TM) и ограничивает свое использование оверлеев и дает шанс другим приложениям.

С тех пор как существуют клиенты Tortoise для других систем управления, мы создали общий компонент, который отвечает за отображение оверлейных значков. Технические детали сейчас несущественны, всё что вам необходимо знать это то, что этот общий компонент позволяет всем клиентам Tortoise использовать одни и те же оверлейные значки и таким образом ограничение в 11 доступных слотов не достигается при установке более чем одного клиента Tortoise. Конечно, есть один небольшой недостаток: все клиенты Tortoise используют те же оверлейные значки, так что вы не можете понять какую систему управления версиями использует рабочая копия.

  • Нормальный, Изменено и Конфликтующее всегда загружаются и отображаются.

  • Удалено загружается по возможности, и отображается как Изменено, если свободных позиций не хватает.

  • Только-для-чтения загружается по возможности, или же отображается как Нормальный, когда свободных позиций не хватает.

  • Заблокирован загружается если возможно, но сбрасывается в Нормальный если слотов недостаточно.

  • Добавлен загружается если возможно, но сбрасывается в Изменен если слотов недостаточно.