SccGetProjPath 함수
이 함수는 소스 제어 플러그 인에만 의미가 있는 문자열인 프로젝트 경로를 묻는 사용자에게 메시지를 표시합니다. 사용자가 다음과 같을 때 호출됩니다.
새 프로젝트 만들기
버전 제어에 기존 프로젝트 추가
기존 버전 제어 프로젝트를 찾는 중
구문
SCCRTN SccGetProjPath (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPSTR lpProjName,
LPSTR lpLocalPath,
LPSTR lpAuxProjPath,
BOOL bAllowChangePath,
LPBOOL pbNew
);
매개 변수
pvContext
[in] 소스 제어 플러그 인 컨텍스트 구조입니다.
hWnd
[in] 소스 제어 플러그 인이 제공하는 대화 상자의 부모로 사용할 수 있는 IDE 창에 대한 핸들입니다.
lpUser
[in, out] 사용자 이름(NULL 종결자를 포함하여 SCC_USER_SIZE를 초과하지 않음)입니다.
lpProjName
[in, out] IDE 프로젝트, 프로젝트 작업 영역 또는 메이크파일의 이름입니다(NULL 종결자를 포함하여 SCC_PRJPATH_SIZE를 초과하지 않음).
lpLocalPath
[in, out] 프로젝트의 작업 경로입니다. 이 bAllowChangePath
가 TRUE
인 경우 소스 제어 플러그 인은 이 문자열을 수정할 수 있습니다(null 종결자를 포함하여 _MAX_PATH를 초과하지 않음).
lpAuxProjPath
[in, out] 반환된 프로젝트 경로에 대한 버퍼입니다(NULL 종결자를 포함하여 SCC_PRJPATH_SIZE를 초과하지 않음).
bAllowChangePath
[in] TRUE
인 경우 소스 제어 플러그 인에서 lpLocalPath
문자열을 프롬프트하고 수정할 수 있습니다.
pbNew
[in, out] 들어오는 값은 새 프로젝트를 만들지 여부를 나타냅니다. 반환된 값은 프로젝트를 만드는 데 성공했음을 나타냅니다.
수신 | 해석 |
---|---|
TRUE | 사용자가 새 프로젝트를 만들 수 있습니다. |
FALSE | 사용자가 새 프로젝트를 만들 수 없습니다. |
나가는 포트 | 해석 |
---|---|
TRUE | 새 프로젝트가 만들어졌습니다. |
FALSE | 기존 프로젝트가 선택되었습니다. |
반환 값
이 함수의 소스 제어 플러그 인 구현은 다음 값 중 하나를 반환해야 합니다.
값 | Description |
---|---|
SCC_OK | 프로젝트를 성공적으로 만들거나 검색했습니다. |
SCC_I_OPERATIONCANCELED | 작업이 취소되었습니다. |
SCC_E_ACCESSFAILURE | 네트워크 또는 경합 문제로 인해 소스 제어 시스템에 액세스하는 데 문제가 발생했습니다. |
SCC_E_CONNECTIONFAILURE | 소스 제어 시스템에 연결하는 중에 문제가 발생했습니다. |
SCC_E_NONSPECIFICERROR | 지정되지 않은 오류가 발생했습니다. |
설명
이 함수의 목적은 IDE가 매개 변수 lpProjName
과 lpAuxProjPath
를 얻는 것입니다 소스 제어 플러그 인이 사용자에게 이 정보를 묻는 메시지를 표시하면 이 두 문자열을 다시 IDE에 전달합니다. IDE는 이러한 문자열을 솔루션 파일에 유지하고 사용자가 이 프로젝트를 열 때마다 SccOpenProject로 전달합니다. 이러한 문자열을 사용하면 플러그 인이 프로젝트와 관련된 정보를 추적할 수 있습니다.
함수가 처음 호출되면 lpAuxProjPath
가 빈 문자열로 설정됩니다. lProjName
은 비어 있거나 소스 제어 플러그 인에서 사용하거나 무시할 수 있는 IDE 프로젝트 이름을 포함할 수도 있습니다. 함수가 성공적으로 반환되면 플러그 인은 두 개의 해당 문자열을 반환합니다. IDE는 이러한 문자열에 대해 가정하지 않으며, 문자열을 사용하지 않으며, 사용자가 문자열을 수정하는 것을 허용하지 않습니다. 사용자가 설정을 변경하려는 경우 IDE는 SccGetProjPath
를 다시 호출하여 이전 시간에 받은 값과 동일한 값을 전달합니다. 이렇게 하면 플러그 인에서 이러한 두 문자열을 완전히 제어할 수 있습니다.
lpUser
의 경우 IDE는 사용자 이름을 전달하거나 단순히 빈 문자열에 대한 포인터를 전달할 수 있습니다. 사용자 이름이 있으면 소스 제어 플러그 인은 이를 기본값으로 사용해야 합니다. 그러나 이름이 전달되지 않았거나 지정된 이름으로 로그인에 실패한 경우 플러그 인은 사용자에게 로그인을 요청하는 메시지를 표시하고 유효한 로그인을 받을 때 lpUser
이름을 다시 전달해야 합니다. 플러그 인이 이 문자열을 변경할 수 있으므로 IDE는 항상 버퍼 크기(SCC_USER_LEN
+1)를 할당합니다.
참고 항목
IDE가 수행하는 첫 번째 작업은 SccOpenProject
함수 또는 SccGetProjPath
함수에 대한 호출일 수 있습니다. 따라서 둘 다 동일한 lpUser
매개 변수를 가지므로 소스 제어 플러그 인이 언제든지 사용자를 로그인할 수 있습니다. 함수의 반환이 실패를 나타내는 경우에도 플러그 인은 이 문자열을 유효한 로그인 이름으로 채워야 합니다.
lpLocalPath
는 사용자가 프로젝트를 유지하는 디렉터리입니다. 빈 문자열일 수 있습니다. 현재 정의된 디렉터리가 없고(사용자가 소스 제어 시스템에서 프로젝트를 다운로드하려고 하는 경우와 같이) bAllowChangePath
값이 TRUE
일 때, 소스 제어 플러그 인은 사용자에게 입력을 요청하거나 다른 메서드를 사용하여 자체 문자열을 lpLocalPath
에 배치할 수 있습니다. bAllowChangePath
가 FALSE
인 경우 사용자가 이미 지정된 디렉터리에서 작업 중이므로 플러그 인에서 문자열을 변경하지 않아야 합니다.
사용자가 소스 제어에 배치할 새 프로젝트를 만들면 소스 제어 플러그 인은 SccGetProjPath
가 호출될 때 소스 제어 시스템에서 실제로 프로젝트를 만들지 않을 수 있습니다. 대신 pbNew
의 0이 아닌 값으로 문자열을 다시 전달하여 프로젝트가 소스 제어 시스템에 생성됨을 나타냅니다.
예를 들어 Visual Studio의 새 프로젝트 마법사에서 사용자가 자신의 프로젝트를 소스 제어에 추가하는 경우 Visual Studio는 이 함수를 호출하고 플러그 인은 Visual Studio 프로젝트를 포함할 소스 제어 시스템에 새 프로젝트를 만들 수 있는지 여부를 확인합니다. 마법사를 완료하기 전에 사용자가 취소를 클릭하면 프로젝트가 만들어지지 않습니다. 사용자가 확인을 클릭하면 Visual Studio에서 SccOpenProject
를 호출하여 SCC_OPT_CREATEIFNEW
를 전달하면 소스 제어 프로젝트가 해당 시간에 만들어집니다.