다음을 통해 공유


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] 프로젝트의 작업 경로입니다. 이 bAllowChangePathTRUE인 경우 소스 제어 플러그 인은 이 문자열을 수정할 수 있습니다(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가 매개 변수 lpProjNamelpAuxProjPath를 얻는 것입니다 소스 제어 플러그 인이 사용자에게 이 정보를 묻는 메시지를 표시하면 이 두 문자열을 다시 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에 배치할 수 있습니다. bAllowChangePathFALSE인 경우 사용자가 이미 지정된 디렉터리에서 작업 중이므로 플러그 인에서 문자열을 변경하지 않아야 합니다.

사용자가 소스 제어에 배치할 새 프로젝트를 만들면 소스 제어 플러그 인은 SccGetProjPath가 호출될 때 소스 제어 시스템에서 실제로 프로젝트를 만들지 않을 수 있습니다. 대신 pbNew의 0이 아닌 값으로 문자열을 다시 전달하여 프로젝트가 소스 제어 시스템에 생성됨을 나타냅니다.

예를 들어 Visual Studio의 새 프로젝트 마법사에서 사용자가 자신의 프로젝트를 소스 제어에 추가하는 경우 Visual Studio는 이 함수를 호출하고 플러그 인은 Visual Studio 프로젝트를 포함할 소스 제어 시스템에 새 프로젝트를 만들 수 있는지 여부를 확인합니다. 마법사를 완료하기 전에 사용자가 취소를 클릭하면 프로젝트가 만들어지지 않습니다. 사용자가 확인을 클릭하면 Visual Studio에서 SccOpenProject를 호출하여 SCC_OPT_CREATEIFNEW를 전달하면 소스 제어 프로젝트가 해당 시간에 만들어집니다.

참고 항목