SccCreateSubProject 함수
이 함수는 lpParentProjPath
인수로 지정된 기존 부모 프로젝트 아래에 주어진 이름으로 하위 프로젝트를 만듭니다.
구문
SCCRTN SccCreateSubProject(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpParentProjPath,
LPCSTR lpSubProjName,
LPSTR lpAuxProjPath,
LPSTR lpSubProjPath
);
매개 변수
pContext
[in] 소스 제어 플러그 인 컨텍스트 포인터입니다.
hWnd
[in] 소스 제어 플러그 인이 제공하는 대화 상자의 부모로 사용할 수 있는 IDE 창에 대한 핸들입니다.
lpUser
[in, out] 사용자 이름(NULL 종결자를 포함하여 최대 SCC_USER_SIZE)입니다.
lpParentProjPath
[in] 부모 프로젝트의 경로를 식별하는 문자열(NULL 종결자를 포함하여 최대 SCC_PRJPATH_SIZE)입니다.
lpSubProjName
[in] 제안된 하위 프로젝트 이름(NULL 종결자를 포함하여 최대 SCC_PRJPATH_SIZE)입니다.
lpAuxProjPath
[in, out] 프로젝트를 식별하는 보조 문자열(NULL 종결자를 포함하여 최대 SCC_PRJPATH_SIZE)입니다.
lpSubProjPath
[in, out] 하위 프로젝트 경로를 식별하는 출력 문자열(NULL 종결자를 포함하여 최대 SCC_PRJPATH_SIZE)입니다.
반환 값
이 함수의 소스 제어 플러그 인 구현은 다음 값 중 하나를 반환해야 합니다.
값 | Description |
---|---|
SCC_OK | 하위 프로젝트가 성공적으로 만들어졌습니다. |
SCC_E_INITIALIZEFAILED | 부모 프로젝트를 초기화할 수 없습니다. |
SCC_E_INVALIDUSER | 사용자가 소스 제어 시스템에 로그인할 수 없습니다. |
SCC_E_COULDNOTCREATEPROJECT | 하위 프로젝트를 만들 수 없습니다. |
SCC_E_PROJSYNTAXERR | 프로젝트 구문이 잘못되었습니다. |
SCC_E_UNKNOWNPROJECT | 소스 제어 플러그 인에서 부모 프로젝트를 알 수 없습니다. |
SCC_E_INVALIDFILEPATH | 잘못되었거나 사용할 수 없는 파일 경로입니다. |
SCC_E_NOTAUTHORIZED | 사용자는 이 작업을 수행할 수 없습니다. |
SCC_E_ACCESSFAILURE | 네트워크 또는 경합 문제로 인해 소스 제어 시스템에 액세스하는 데 문제가 발생했습니다. 다시 시도하는 것이 좋습니다. |
SCC_E_CONNECTIONFAILURE | 소스 제어 플러그 인 연결 문제가 발생했습니다. |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
일반적인 오류입니다. |
설명
이름이 있는 하위 프로젝트가 이미 있는 경우 함수는 기본 이름을 변경하여 고유한 이름을 만들 수 있습니다(예: “_<number>”를 추가). 호출자는 lpUser
, lpSubProjPath
, lpAuxProjPath
에 대한 변경 내용을 수락할 준비가 되어 있어야 합니다. lpSubProjPath
그런 다음, SccOpenProject에 대한 호출에 인수와 lpAuxProjPath
인수가 사용됩니다. 반환 시 호출자가 이를 수정해서는 안 됩니다. 이러한 문자열은 소스 제어 플러그 인이 프로젝트와 연결하는 데 필요한 정보를 추적하는 방법을 제공합니다. 플러그 인이 보기에 적합하지 않을 수 있는 형식이 지정된 문자열을 사용할 수 있으므로 호출자 IDE는 반환 시 이러한 두 매개 변수를 표시하지 않습니다. 이 함수는 성공 또는 실패 코드를 반환하고 성공하면 변수 lpSubProjPath
를 새 프로젝트에 대한 전체 프로젝트 경로로 채웁니다.
이 함수는 사용자에게 프로젝트를 선택하라는 메시지를 표시하지 않고 자동으로 프로젝트를 만든다는 점을 제외하면 SccGetProjPath와 유사합니다. SccCreateSubProject
함수가 호출되면 lpParentProjName
및 lpAuxProjPath
이 비어 있지 않으며 유효한 프로젝트에 해당합니다. 이러한 문자열은 일반적으로 SccGetProjPath
함수 또는 SccGetParentProjectPath에 대한 이전 호출에서 IDE에 의해 수신됩니다.
lpUser
인수는 사용자 이름입니다. IDE는 이전에 SccGetProjPath
에서 받은 것과 동일한 사용자 이름을 전달하며 소스 제어 플러그 인은 이 이름을 기본값으로 사용해야 합니다. 사용자가 이미 플러그 인과 연결된 경우 플러그 인은 함수가 자동으로 작동하는지 확인하기 위해 프롬프트를 제거하려고 시도해야 합니다. 그러나 로그인에 실패하면 플러그 인은 사용자에게 로그인을 요청하고 유효한 로그인을 수신하면 lpUser
에 이름을 다시 전달해야 합니다. 플러그 인이 이 문자열을 변경할 수 있으므로 IDE는 항상 크기의 버퍼(null 종결자에 대한 공간을 포함하는 SCC_USER_LEN+1 또는 SCC_USER_SIZE)를 할당합니다. 문자열이 변경된 경우 새 문자열은 유효한 로그인 이름이어야 합니다(적어도 이전 문자열만큼 유효함).
SccCreateSubProject 및 SccGetParentProjectPath에 대한 기술 참고 사항
Visual Studio에서 소스 제어에 솔루션 및 프로젝트 추가가 사용자에게 소스 제어 시스템에서 위치를 선택하라는 메시지가 표시되는 횟수를 최소화하도록 간소화되었습니다. 이러한 변경 사항은 소스 제어 플러그 인이 새로운 함수인 SccCreateSubProject
및 SccGetParentProjectPath
를 모두 지원하는 경우 Visual Studio에서 활성화됩니다. 그러나 다음 레지스트리 항목을 사용하여 이러한 변경 내용을 사용하지 않도록 설정하고 이전 Visual Studio(소스 제어 플러그 인 API 버전 1.1) 동작으로 되돌릴 수 있습니다.
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] "DoNotCreateSolutionRootFolderInSourceControl"=dword:00000001
이 레지스트리 항목이 없거나 dword:000000000으로 설정된 경우 Visual Studio는 새 함수 SccCreateSubProject
및 SccGetParentProjectPath
를 사용하려고 시도합니다.
레지스트리 항목이 dword:00000001로 설정된 경우 Visual Studio는 이러한 새 함수를 사용하려고 시도하지 않고, 소스 제어에 추가 작업이 이전 버전의 Visual Studio에서와 같이 작동합니다.