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]源代码管理插件可以作为其提供的任何对话框的父级的 IDE 窗口的句柄。

lpUser

[in, out]用户的名称(不得超过SCC_USER_SIZE,包括 NULL 终止符)。

lpProjName

[in]标识项目名称的字符串。

lpLocalProjPath

[in]项目的工作文件夹的路径。

lpAuxProjPath

[in, out]用于标识项目的可选辅助字符串(不包括 NULL 终止符)SCC_AUXPATH_SIZE。

lpComment

[in]正在创建的新项目的注释。

lpTextOutProc

[in]用于显示源代码管理插件的文本输出的可选回调函数。

dwFlags

[in]指示如果项目对源代码管理插件未知,是否需要创建新项目。 值可以是和SCC_OP_CREATEIFNEWSCC_OP_SILENTOPEN.

返回值

此函数的源代码管理插件实现应返回以下值之一:

说明
SCC_OK 成功打开项目。
SCC_E_INITIALIZEFAILED 无法初始化 Project。
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 非特定故障;未初始化源代码管理系统。

注解

IDE 可以传入用户名(lpUser),也可以只传入指向空字符串的指针。 如果有用户名,源代码管理插件应将其用作默认值。 但是,如果未传递任何名称,或者登录名失败,插件应提示用户登录,并在收到有效登录.时返回有效名称lpUser,因为插件可能会更改用户名字符串,IDE 将始终分配大小缓冲区(SCC_USER_LEN+1 或SCC_USER_SIZE, 包括 null 终止符的空间)。

注意

IDE 可能需要执行的第一个操作可能是对SccOpenProject函数或 SccGetProjPath调用。 因此,两者都具有相同的 lpUser 参数。

lpAuxProjPath 并从 lpProjName 解决方案文件读取,或者从对函数的 SccGetProjPath 调用中返回它们。 这些参数包含源代码管理插件与项目关联的字符串,并且仅对插件有意义。 如果解决方案文件中没有此类字符串,并且没有提示用户浏览(这将通过SccGetProjPath函数返回字符串),IDE 会同时lpAuxProjPathlpProjName传递空字符串,并且预期此函数返回时插件会更新这些值。

lpTextOutProc 是指向 IDE 提供给源代码管理插件的回调函数的指针,用于显示命令结果输出。 此回调函数在 LPTEXTOUTPROC进行了详细介绍。

注意

如果源代码管理插件打算利用此功能,则必须在 SccInitialize设置SCC_CAP_TEXTOUT标志。 如果未设置该标志,或者 IDE 不支持此功能, 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 位是在源代码管理插件 API 版本 1.1 中引入的。 它未在版本 1.0 中设置或被忽略,并且所有版本 1.0 源代码管理插件都假定为非实体。

另请参阅