Поделиться через


Сведения о конфигурации системы управления версиями

Для реализации системы управления версиями необходимо правильно настроить систему проекта или редактор для выполнения следующих действий:

  • Запрос разрешения на переход на измененное состояние

  • Запрос разрешения на сохранение файла

  • Запрос разрешения на добавление, удаление или переименование файлов в проекте

Запрос разрешения на переход в измененное состояние

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

В ответ на IVsQueryEditQuerySave2::QueryEditFiles вызов среда может выполнить следующее:

  • Отклонить вызов изменения, в этом случае редактор или проект должен оставаться в неизменном (чистом) состоянии.

  • Укажите, что данные документа должны быть перезагружены. Для проекта среда перезагрузит данные для проекта. Редактор должен перезагрузить данные с диска через его реализацию ReloadDocData . В любом случае контекст проекта или редактора может измениться при перезагрузке данных.

    Это сложная и сложная задача для модернизации соответствующих IVsQueryEditQuerySave2::QueryEditFiles вызовов существующей базы кода. В результате эти вызовы должны быть интегрированы во время создания проекта или редактора.

Запрос разрешения на сохранение файла

Прежде чем проект или редактор сохраняет файл, он должен вызвать QuerySaveFile или QuerySaveFiles. Для файлов проекта эти вызовы автоматически выполняются решением, которое знает, когда сохранить файл проекта. Редакторы отвечают за выполнение этих вызовов, если реализация редактора IVsPersistDocData2 не использует вспомогательные функции SaveDocDataToFile. Если редактор реализуется IVsPersistDocData2 таким образом, вызов или IVsQueryEditQuerySave2::QuerySaveFile IVsQueryEditQuerySave2::QuerySaveFiles выполняется для вас.

Примечание.

Всегда выполняйте эти вызовы предварительно— то есть в то время, когда редактор может получить отмену.

Запрос разрешения на добавление, удаление или переименование файлов в проекте

Прежде чем проект может добавить, переименовать или удалить файл или каталог, он должен вызвать соответствующий IVsTrackProjectDocuments2::OnQuery* метод, чтобы запросить разрешение из среды. Если разрешение предоставлено, проект должен завершить операцию, а затем вызвать соответствующий IVsTrackProjectDocuments2::OnAfter* метод, чтобы уведомить среду о завершении операции. Проект должен вызывать методы IVsTrackProjectDocuments2 интерфейса для всех файлов (например, специальных файлов), а не только родительских файлов. Вызовы файлов являются обязательными, но вызовы каталогов являются необязательными. Если у проекта есть сведения о каталоге, то он должен вызвать соответствующие IVsTrackProjectDocuments2 методы, но если у него нет этих сведений, среда будет выводить сведения о каталоге.

Проект не должен вызывать методы при открытии или закрытии IVsTrackProjectDocuments2 проекта. Прослушиватели, которые хотят, чтобы эта информация при запуске ждала OnAfterOpenSolution события и итерации через решение, чтобы найти нужную информацию. При завершении работы эти сведения не требуются. IVsTrackProjectDocuments2предоставляется из .SVsTrackProjectDocuments

Для каждого добавления, переименования и удаления действия существует OnQuery* метод и OnAfter* метод. OnQuery* Вызовите метод, чтобы задать разрешение на добавление, переименование или удаление файла или каталога. OnAfter* Вызовите метод после добавления, переименования или удаления файла или каталога, а состояние проекта отражает новое состояние.