Функция 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.