소스 제어 플러그 인을 구현하기 위한 유용한 정보
다음과 같은 기술 세부 사항 사용 안정적으로 소스 제어 플러그 인을 구현할 수 있습니다 Visual Studio.
메모리 관리 문제
대부분의 경우, 호출자는 통합된 개발 환경 (IDE)를 해제 하 고 메모리를 할당 합니다. 소스 제어 플러그 인 호출자 할당 버퍼에서 문자열 및 기타 항목을 반환합니다. 예외가 발생 하는 특정 함수에 대 한 설명에 명시 되어 있습니다.
파일 이름의 배열
파일의 배열을 전달 하는 경우 파일 이름 배열은 연속적으로 전달 되지 않습니다. 파일 이름으로 포인터 배열은 이름으로 전달 합니다. 경우에 SccGet 함수, 파일 이름을 전달 하는는 lpFileNames 매개 변수를 위치 lpFileNames 실제로에 대 한 포인터입니다를 char **. lpFileNames[0]는 이름에 대 한 포인터입니다 lpFileNames[1]에서 확인 하 고 두 번째 이름에 대 한 포인터입니다.
큰 모델
모든 포인터는 16 비트 운영 체제에서 경우에 32 비트입니다.
정규화 된 경로
여기서 파일 이름, 디렉터리 인수로 지정 된 정규화 된 경로 또는 UNC 경로 마지막 백슬래시 없이 해야 합니다. 플러그인이 즉 기본 원본 컨트롤 시스템 요구 하는 경우 상대 경로를 변환 하는 소스 제어의 책임입니다.
등록 된 DLL에 대 한 정규화 된 경로 지정 합니다.
IDE 더 이상 Dll에서 상대 경로 (예:. 로드 \NewProvider.dll)입니다. DLL의 전체 경로 (예: C:\Providers\NewProvider.dll) 지정 해야 합니다. 이 요구 사항을 무단 또는 가장 된 원본 컨트롤 Dll 로드 하지 못하게 하 여 IDE의 보안을 강화.
소스 제어 플러그 인을 설치 하는 경우는 기존 VSSCI 플러그 인에 대 한 확인
소스 제어 플러그 인을 설치 하는 사용자가 컴퓨터에 설치 된 기존 소스 제어 플러그 인 이미 있을 수 있습니다. (설치 프로그램) 설치 프로그램이 플러그인을 만드는 것 관련 레지스트리 키에 대 한 기존 값이 있는지 확인 해야 합니다. 이 키가 이미 설정 되어 있으면 설치 프로그램을 사용자가 기본 소스 제어 플러그 인 플러그 인을 등록 하 고 이미 설치 되어 있는 대체 여부를 요청 해야 합니다.
오류 결과 코드 및 보고
SCC_OK 소스 제어 기능에 대 한 코드를 나타내는 모든 파일에 대 한 작업이 성공 했음을 반환 합니다. 작업이 실패할 경우 발생 하는 마지막 오류 코드를 반환할 것입니다.
규칙을 보고 IDE에서 오류가 발생 하는 경우 IDE를 보고 하는 데 담당 하는 것입니다. 소스 제어 시스템에서 오류가 발생 하면 소스 제어 플러그 인이 보고 하는 데 담당 합니다. "이이 파일을 이미 체크 아웃" 플러그인으로 보고 될 수 있지만 예를 들어, "파일을 선택 하지 현재" IDE에서 보고 됩니다.
컨텍스트 구조
호출 중에 SccInitialize 함수, 호출자에 게 전달의 ppvContext 매개 변수에 void는 초기화 되지 않은 핸들입니다. 소스 제어 플러그 인이 매개 변수를 무시할 수 있습니다 또는 어떤 종류의 구조를 할당할 및 포인터에 전달 된 포인터가 해당 구조에 넣을 수 있습니다. IDE이이 구조를 이해 하지 못하는 있지만 플러그 인에서 모든 다른 호출에 대 한 포인터가이 구조체에 전달 합니다. 이 전역 변수를 사용 하지 않고 함수 호출 간에 지속 되는 전역 상태 정보를 유지 관리 하는 데 사용할 수 있는 플러그인으로 귀중 한 컨텍스트 캐시 정보를 제공 합니다. 플러그인의 구조에 대 한 호출을 확보에 대 한 책임입니다 있는 SccUninitialize 함수.
경우 플러그인 세트는 SCC_CAP_REENTRANT 의 비트는 SccInitialize 함수 (특히에 lpSccCaps 매개 변수), 여러 컨텍스트 구조에 열려 있는 모든 프로젝트를 추적 하는 데 사용 됩니다.
비트 플래그 및 다른 명령 옵션
각 명령에 대 한 예는 SccGet 함수, IDE 명령 동작을 변경 하는 여러 가지 옵션을 지정할 수 있습니다.
특정 옵션을 통해 IDE에서의 설정 API 지원의 fOptions 매개 변수. 이러한 옵션에 설명 되어 특정 명령에서 사용되는 비트 플래그 영향을 받는 명령을 함께 사용 합니다. 일반적으로 이러한 옵션을 표시 하지 될 것입니다.
소스 제어 플러그 인 간의 다양할 수 있기 때문에 이러한 방식으로 대부분의 사용자가 구성할 수 있는 설정 옵션 정의 되지 않습니다. 따라서 권장 되는 메커니즘입니다 있는 고급 단추. 예를 들어 있는 얻을 대화 상자에서 IDE 인식할 수 있는 있지만 또한 표시 되는 정보에만 표시는 고급 이 명령에 대 한 플러그 인에 있을 경우 단추. 누를 때의 고급 IDE 호출 버튼의 SccGetCommandOptions 함수 비트 플래그 또는 날짜/시간 등의 정보를 입력 하 라는 플러그 인은 소스 제어를 설정 합니다. 플러그 인이 정보가 반환 동안 다시 전달 되는 구조체에는 SccGet 명령입니다.