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


Функция SccOpenProject

Эта функция открывает существующий проект системы управления версиями или создает новый.

Синтаксис

SCCRTN SccOpenProject (
   LPVOID        pvContext,
   HWND          hWnd,
   LPSTR         lpUser,
   LPCSTR        lpProjName,
   LPCSTR        lpLocalProjPath,
   LPSTR         lpAuxProjPath,
   LPCSTR        lpComment,
   LPTEXTOUTPROC lpTextOutProc,
   LONG          dwFlags
);

Параметры

pvContext

[in] Структура контекста подключаемого модуля управления версиями.

hWnd

[in] Дескриптор окна интегрированной среды разработки, который подключаемый модуль управления версиями может использовать в качестве родительского элемента для любых диалоговых окон, которые он предоставляет.

lpUser

[in, out] Имя пользователя (не должно превышать SCC_USER_SIZE, включая терминатор NULL).

lpProjName

[in] Строка, определяющая имя проекта.

lpLocalProjPath

[in] Путь к рабочей папке проекта.

lpAuxProjPath

[in, out]Необязательная вспомогательная строка, определяющая проект (не превышает SCC_AUXPATH_SIZE, включая терминатор NULL).

lpComment

[in] Примечания к созданному проекту.

lpTextOutProc

[in] Необязательная функция обратного вызова для отображения текстовых выходных данных из подключаемого модуля управления версиями.

dwFlags

[in] Указывает, нужно ли создать новый проект, если проект неизвестен подключаемым модулем управления версиями. Значение может быть сочетанием SCC_OP_CREATEIFNEW и SCC_OP_SILENTOPEN.

Возвращаемое значение

Реализация подключаемого модуля управления версиями этой функции должна возвращать одно из следующих значений:

значение Описание
SCC_OK Успешное открытие проекта.
SCC_E_INITIALIZEFAILED Не удалось инициализировать проект.
SCC_E_INVALIDUSER Пользователь не мог войти в систему системы управления версиями.
SCC_E_COULDNOTCREATEPROJECT Проект не существовал до вызова; SCC_OPT_CREATEIFNEW флаг был установлен, но проект не удалось создать.
SCC_E_PROJSYNTAXERR Недопустимый синтаксис проекта.
SCC_E_UNKNOWNPROJECT Проект неизвестен для подключаемого модуля управления версиями, и SCC_OPT_CREATEIFNEW флаг не был задан.
SCC_E_INVALIDFILEPATH Недопустимый или непригодный путь к файлу.
SCC_E_NOTAUTHORIZED Пользователю не разрешено выполнять эту операцию.
SCC_E_ACCESSFAILURE Возникла проблема с доступом к системе управления версиями, вероятно, из-за проблем с сетью или спором. Рекомендуется повторить попытку.
SCC_E_NONSPECFICERROR Неспецифический сбой; Система управления версиями не инициализирована.

Замечания

Интегрированная среда разработки может передать имя пользователя (lpUser) или просто передать указатель на пустую строку. Если есть имя пользователя, подключаемый модуль управления версиями должен использовать его в качестве значения по умолчанию. Однако, если имя не было передано или если имя входа не выполнено с заданным именем, подключаемый модуль должен запрашивать вход пользователя и возвращать допустимое имя при lpUser получении допустимого имени входа. , так как подключаемый модуль может изменить строку имени пользователя, интегрированная среда разработки всегда выделяет буфер размера (SCC_USER_LEN+1 или SCC_USER_SIZE, который включает пространство для конца null).

Примечание.

Первое действие, необходимое для выполнения интегрированной среды разработки, может быть вызов SccOpenProject функции или SccGetProjPath. По этой причине оба из них имеют одинаковый lpUser параметр.

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

lpTextOutProc — это указатель на функцию обратного вызова, предоставляемую интегрированной интегрированной системой разработки, в подключаемый модуль управления версиями для отображения выходных данных результата команды. Эта функция обратного вызова подробно описана в LPTEXTOUTPROC.

Примечание.

Если подключаемый модуль управления версиями намерен воспользоваться этим, он должен установить SCC_CAP_TEXTOUT флаг в SccInitialize. Если этот флаг не установлен или если интегрированная среда разработки не поддерживает эту функцию, lpTextOutProc будет NULL.

Параметр dwFlags управляет результатом в случае, если открытый проект в настоящее время не существует. Он состоит из двух битовых отложений и SCC_OP_CREATEIFNEW SCC_OP_SILENTOPEN. Если открытый проект уже существует, функция просто открывает проект и возвращает.SCC_OK Если проект не существует и SCC_OP_CREATEIFNEW если флаг включен, подключаемый модуль управления версиями может создать проект в системе управления версиями, открыть его и вернуть SCC_OK. Если проект не существует, и SCC_OP_CREATEIFNEW если флаг отключен, подключаемый модуль должен проверить наличие флага SCC_OP_SILENTOPEN . Если этот флаг не включен, подключаемый модуль может предложить пользователю имя проекта. Если этот флаг включен, подключаемый модуль должен просто вернуться SCC_E_UNKNOWNPROJECT.

Порядок вызовов

В обычном ходе событий SccInitialize будет вызываться сначала для открытия сеанса управления версиями. Сеанс может состоять из вызова SccOpenProject, за которым следуют другие вызовы функции API подключаемого модуля управления версиями, и завершится вызовом SccCloseProject. Такие сеансы могут повторяться несколько раз до вызова SccUninitialize .

Если подключаемый модуль управления версиями задает SCC_CAP_REENTRANT бит, SccInitializeто указанная выше последовательность сеансов может повторяться несколько раз параллельно. Различные pvContext структуры отслеживают различные сеансы, в которых каждый pvContext связан с одним открытым проектом одновременно. В зависимости от параметра подключаемый pvContext модуль может определить, на какой проект ссылается любой конкретный вызов. Если бит SCC_CAP_REENTRANT возможностей не задан, подключаемые модули управления версиями неустанно ограничены в их способности работать с несколькими проектами.

Примечание.

Бит SCC_CAP_REENTRANT был представлен в версии 1.1 API подключаемого модуля управления версиями. Предполагается, что все подключаемые модули управления версиями 1.0 не заданы или игнорируются в версии 1.0.

См. также