소스 제어 구성 세부 정보
소스 제어를 구현하려면 다음을 수행하도록 프로젝트 시스템이나 편집기를 올바르게 구성해야 합니다.
변경된 상태로 전환할 수 있는 권한 요청
파일을 저장할 수 있는 권한 요청
프로젝트에서 파일을 추가, 제거 또는 이름을 바꿀 수 있는 권한 요청
변경된 상태로 전환할 수 있는 권한 요청
프로젝트나 편집기에서 IVsQueryEditQuerySave2를 호출하여 변경된(더티) 상태로 전환할 수 있는 권한을 요청해야 합니다. IsDocDataDirty를 구현하는 각 편집기에서는 IsDocDataDirty에 True
를 반환하기 전에 환경에서 문서를 변경하도록 QueryEditFiles를 호출하고 승인을 받아야 합니다. 프로젝트는 프로젝트 파일의 필수 편집기이므로 텍스트 편집기가 해당 파일에 수행하는 것처럼 프로젝트 파일의 변경된 상태 추적 구현에 대한 동일한 책임이 있습니다. 환경은 솔루션의 변경된 상태를 처리합니다. 하지만 솔루션이 참조하는 개체의 변경된 상태를 처리해야 하지만 프로젝트 파일이나 해당 항목처럼 저장되지 않습니다. 일반적으로 프로젝트나 편집기에서 항목의 지속성을 관리해야 하는 경우 변경된 상태 추적을 구현해야 합니다.
IVsQueryEditQuerySave2::QueryEditFiles
호출에 대한 응답으로 환경에서 다음을 수행할 수 있습니다.
호출 변경을 거부합니다. 이 경우 편집기나 프로젝트가 변경되지 않은(깨끗한) 상태로 유지되어야 합니다.
문서 데이터를 다시 로드해야 함을 나타냅니다. 프로젝트의 경우 환경에서 프로젝트의 데이터를 다시 로드합니다. 편집기에서는 ReloadDocData 구현을 통해 디스크에서 데이터를 다시 로드해야 합니다. 두 경우 모두 데이터가 다시 로드될 때 프로젝트나 편집기에서 컨텍스트가 변경될 수 있습니다.
기존 코드 베이스에 적절한
IVsQueryEditQuerySave2::QueryEditFiles
호출을 개조하는 것은 복잡하고 어려운 작업입니다. 따라서 프로젝트나 편집기를 만드는 동안 이러한 호출을 통합해야 합니다.
파일을 저장할 수 있는 권한 요청
프로젝트나 편집기에서 파일을 저장하기 전에 QuerySaveFile 또는 QuerySaveFiles를 호출해야 합니다. 프로젝트 파일의 경우 프로젝트 파일을 저장할 시기를 알고 있는 솔루션에서 이러한 호출을 자동으로 완료합니다. IVsPersistDocData2
편집기 구현에서 도우미 함수 SaveDocDataToFile을 사용하지 않는 한 편집기는 이러한 호출을 수행해야 합니다. 편집기가 이러한 방식으로 IVsPersistDocData2
를 구현하는 경우 자동으로 IVsQueryEditQuerySave2::QuerySaveFile
또는 IVsQueryEditQuerySave2::QuerySaveFiles
가 호출됩니다.
참고 항목
항상 이러한 호출을 선제적으로 만듭니다. 즉, 편집기가 취소를 받을 수 있는 시점에 호출합니다.
프로젝트에서 파일을 추가, 제거 또는 이름을 바꿀 수 있는 권한 요청
프로젝트에서 파일이나 디렉터리를 추가, 이름 바꾸기 또는 제거하려면 먼저 적절한 IVsTrackProjectDocuments2::OnQuery*
메서드를 호출하여 환경에서 권한을 요청해야 합니다. 권한이 부여되면 프로젝트는 작업을 완료한 다음, 적절한 IVsTrackProjectDocuments2::OnAfter*
메서드를 호출하여 작업이 완료되었음을 환경에 알려야 합니다. 프로젝트에서 부모 파일뿐만 아니라 모든 파일(예: 특수 파일)에 대한 IVsTrackProjectDocuments2 인터페이스 메서드를 호출해야 합니다. 파일 호출은 필수이지만 디렉터리 호출은 선택 사항입니다. 프로젝트에 디렉터리 정보가 있는 경우 적절한 IVsTrackProjectDocuments2 메서드를 호출해야 합니다. 하지만 이 정보가 없으면 환경은 디렉터리 정보를 유추합니다.
프로젝트가 열려 있거나 닫혀 있을 때 IVsTrackProjectDocuments2
메서드를 호출하면 안 됩니다. 시작 시 이 정보를 원하는 수신기는 OnAfterOpenSolution 이벤트를 기다리고 솔루션을 반복하여 필요한 정보를 찾을 수 있습니다. 종료할 때는 이 정보가 필요하지 않습니다. IVsTrackProjectDocuments2
는 SVsTrackProjectDocuments에서 제공됩니다.
추가, 이름 바꾸기 및 제거 작업마다 OnQuery*
메서드와 OnAfter*
메서드가 있습니다. OnQuery*
메서드를 호출하여 파일이나 디렉터리를 추가, 이름 바꾸기 또는 제거할 수 있는 권한을 요청합니다. 파일이나 디렉터리가 추가, 이름 바꾸기 또는 제거되고 프로젝트 상태가 새 상태를 반영한 후에 OnAfter*
메서드를 호출합니다.