Функция SccGetProjPath
Эта функция предлагает пользователю путь к проекту, который является строкой, которая имеет смысл только для подключаемого модуля управления версиями. Он вызывается, когда пользователь:
Создание нового проекта
Добавление существующего проекта в управление версиями
Попытка найти существующий проект управления версиями
Синтаксис
SCCRTN SccGetProjPath (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPSTR lpProjName,
LPSTR lpLocalPath,
LPSTR lpAuxProjPath,
BOOL bAllowChangePath,
LPBOOL pbNew
);
Параметры
pvContext
[in] Структура контекста подключаемого модуля управления версиями.
hWnd
[in] Дескриптор окна интегрированной среды разработки, который подключаемый модуль управления версиями может использовать в качестве родительского элемента для любых диалоговых окон, которые он предоставляет.
lpUser
[in, out] Имя пользователя (не должно превышать SCC_USER_SIZE, включая терминатор NULL)
lpProjName
[in, out] Имя проекта интегрированной среды разработки, рабочей области проекта или файла makefile (не должно превышать SCC_PRJPATH_SIZE, включая терминатор NULL).
lpLocalPath
[in, out] Рабочий путь проекта. Если bAllowChangePath
это TRUE
так, подключаемый модуль управления версиями может изменить эту строку (не превышать _MAX_PATH, включая конечный элемент NULL).
lpAuxProjPath
[in, out] Буфер для возвращаемого пути проекта (не превышает SCC_PRJPATH_SIZE, включая терминатор NULL).
bAllowChangePath
[in] Если это TRUE
так, подключаемый модуль управления версиями может запрашивать и изменять lpLocalPath
строку.
pbNew
[in, out] Значение, поступающее в систему, указывает, следует ли создать новый проект. Возвращаемое значение указывает на успешное создание проекта:
Входящие | Интерпретация |
---|---|
TRUE | Пользователь может создать новый проект. |
FALSE | Пользователь не может создать новый проект. |
Исходящий | Интерпретация |
---|---|
TRUE | Был создан новый проект. |
FALSE | Был выбран существующий проект. |
Возвращаемое значение
Реализация подключаемого модуля управления версиями этой функции должна возвращать одно из следующих значений:
значение | Описание |
---|---|
SCC_OK | Проект был успешно создан или получен. |
SCC_I_OPERATIONCANCELED | The operation was canceled (Ошибка отправки запроса в Load Balancer: операция отменена). |
SCC_E_ACCESSFAILURE | Возникла проблема с доступом к системе управления версиями, вероятно, из-за проблем с сетью или спором. |
SCC_E_CONNECTIONFAILURE | Возникла проблема с попыткой подключиться к системе управления версиями. |
SCC_E_NONSPECIFICERROR | Произошла неизвестная ошибка. |
Замечания
Эта функция предназначена для интегрированной среды разработки для получения параметров lpProjName
и lpAuxProjPath
. После того как подключаемый модуль управления версиями запрашивает пользователю эту информацию, он передает эти две строки обратно в интегрированную среду разработки. Интегрированная среда разработки сохраняет эти строки в файле решения и передает их в SccOpenProject всякий раз, когда пользователь открывает этот проект. Эти строки позволяют подключаемым модулем отслеживать сведения, связанные с проектом.
При первом вызове lpAuxProjPath
функции устанавливается пустая строка. lProjName
также может быть пустым или содержать имя проекта интегрированной среды разработки, которое подключаемый модуль управления версиями может использовать или игнорировать. Когда функция успешно возвращается, подключаемый модуль возвращает две соответствующие строки. Интегрированная среда разработки не делает предположений об этих строках, не будет использовать их и не позволит пользователю изменять их. Если пользователь хочет изменить параметры, интегрированная среда разработки снова вызовет SccGetProjPath
, передавая те же значения, что и в предыдущий раз. Это обеспечивает полный контроль над этими двумя строками.
Для lpUser
этого интегрированная среда разработки может передать имя пользователя или просто передать указатель на пустую строку. Если есть имя пользователя, подключаемый модуль управления версиями должен использовать его в качестве значения по умолчанию. Однако если имя не было передано или если имя входа не выполнено с заданным именем, подключаемый модуль должен запрашивать имя для входа и передавать имя обратно при lpUser
получении допустимого имени входа. Так как подключаемый модуль может изменить эту строку, интегрированная среда разработки всегда выделяет буфер размера (SCC_USER_LEN
+1).
Примечание.
Первое действие, которое выполняет интегрированная среда разработки, может быть вызовом SccOpenProject
функции или SccGetProjPath
функции. Поэтому оба из них имеют одинаковый lpUser
параметр, который позволяет подключаемым модулем управления версиями входить в систему пользователя в любое время. Даже если возврат из функции указывает на сбой, подключаемый модуль должен заполнить эту строку допустимым именем входа.
lpLocalPath
— каталог, в котором пользователь хранит проект. Это может быть пустая строка. Если в настоящее время отсутствует каталог (как и в случае с пользователем, пытающимся скачать проект из системы управления версиями), и если bAllowChangePath
таковой TRUE
, подключаемый модуль управления версиями может запрашивать ввод или использовать другой метод для размещения собственной строки lpLocalPath
. Если bAllowChangePath
это FALSE
так, подключаемый модуль не должен изменять строку, так как пользователь уже работает в указанном каталоге.
Если пользователь создает новый проект для управления версиями, подключаемый модуль управления версиями может не создать его в системе управления версиями во время SccGetProjPath
вызова. Вместо этого он передает строку вместе со значением pbNew
ненулевого значения, указывая, что проект будет создан в системе управления версиями.
Например, если пользователь в мастере создания проектов в Visual Studio добавляет свой проект в систему управления версиями, Visual Studio вызывает эту функцию, а подключаемый модуль определяет, правильно ли создать проект в системе управления версиями, чтобы содержать проект Visual Studio. Если пользователь нажимает кнопку "Отмена" перед завершением работы мастера, проект никогда не создается. Если пользователь нажимает кнопку "ОК", в Visual Studio вызывается SccOpenProject
, передается SCC_OPT_CREATEIFNEW
и создается управляемый источником проект в то время.