매뉴얼

COM 인터페이스

다른 프로그램에서 Subversion 리비전 정보에 접근해야 하는 경우, SubWCRev의 COM 인터페이스를 사용할 수 있습니다. 생성할 객체는 SubWCRev.object이며, 다음 메서드들이 지원됩니다.

표 6.4. 지원되는 COM/자동화 메서드

메서드설명
.GetWCInfo이 메서드는 작업 사본을 탐색하여 리비전 정보를 수집합니다. 당연히 나머지 메서드를 사용하여 정보에 접근하기 전에 이 메서드를 호출해야 합니다. 첫 번째 매개변수는 경로입니다. 폴더 리비전을 포함하려면 두 번째 매개변수는 true여야 합니다. -f 명령줄 스위치와 동일합니다. svn:externals를 포함하려면 세 번째 매개변수는 true여야 합니다. -e 명령줄 스위치와 동일합니다.
.GetWCInfo2GetWCInfo()와 동일하지만, -E 명령줄 스위치와 동일한 값을 설정하는 네 번째 매개변수가 있습니다.
.Revision작업 사본에서 가장 높은 커밋 리비전입니다. $WCREV$와 동일합니다.
.Date가장 높은 커밋 리비전의 커밋 날짜/시간입니다. $WCDATE$와 동일합니다.
.Author가장 높은 커밋 리비전의 작성자, 즉 작업 사본에 변경 사항을 마지막으로 커밋한 사람입니다.
.MinRev$WCRANGE$에 표시된 최소 업데이트 리비전입니다.
.MaxRev$WCRANGE$에 표시된 최대 업데이트 리비전입니다.
.HasModifications로컬 변경 사항이 있는 경우 true입니다.
.HasUnversioned버전 관리되지 않은 항목이 있는 경우 true입니다.
.UrlGetWCInfo에 사용된 작업 사본 경로의 저장소 URL로 대체됩니다. $WCURL$과 동일합니다.
.RepoRoot저장소 루트의 URL로 대체됩니다. $REPOROOT$와 동일합니다.
.IsSvnItem항목이 버전 관리되는 경우 true입니다.
.NeedsLocking항목에 svn:needs-lock 속성이 설정되어 있는 경우 true입니다.
.IsLocked항목이 잠겨 있는 경우 true입니다.
.LockCreationDate잠금이 생성된 날짜를 나타내는 문자열이거나, 항목이 잠겨 있지 않으면 빈 문자열입니다.
.LockOwner잠금 소유자를 나타내는 문자열이거나, 항목이 잠겨 있지 않으면 빈 문자열입니다.
.LockComment잠금이 생성될 때 입력된 메시지입니다.


다음 예제는 인터페이스가 어떻게 사용될 수 있는지 보여줍니다.

// testCOM.js - javascript file
// test script for the SubWCRev COM/Automation-object

filesystem = new ActiveXObject("Scripting.FileSystemObject");

revObject1 = new ActiveXObject("SubWCRev.object");
revObject2 = new ActiveXObject("SubWCRev.object");
revObject3 = new ActiveXObject("SubWCRev.object");
revObject4 = new ActiveXObject("SubWCRev.object");

revObject1.GetWCInfo(
    filesystem.GetAbsolutePathName("."), 1, 1);
revObject2.GetWCInfo(
    filesystem.GetAbsolutePathName(".."), 1, 1);
revObject3.GetWCInfo(
    filesystem.GetAbsolutePathName("SubWCRev.cpp"), 1, 1);
revObject4.GetWCInfo2(
    filesystem.GetAbsolutePathName("..\\.."), 1, 1, 1);

wcInfoString1 = "Revision = " + revObject1.Revision +
                "\nMin Revision = " + revObject1.MinRev +
                "\nMax Revision = " + revObject1.MaxRev +
                "\nDate = " + revObject1.Date +
                "\nURL = " + revObject1.Url + "\nAuthor = " +
                revObject1.Author + "\nHasMods = " +
                revObject1.HasModifications + "\nIsSvnItem = " +
                revObject1.IsSvnItem + "\nNeedsLocking = " +
                revObject1.NeedsLocking + "\nIsLocked = " +
                revObject1.IsLocked + "\nLockCreationDate = " +
                revObject1.LockCreationDate + "\nLockOwner = " +
                revObject1.LockOwner + "\nLockComment = " +
                revObject1.LockComment;
wcInfoString2 = "Revision = " + revObject2.Revision +
                "\nMin Revision = " + revObject2.MinRev +
                "\nMax Revision = " + revObject2.MaxRev +
                "\nDate = " + revObject2.Date +
                "\nURL = " + revObject2.Url + "\nAuthor = " +
                revObject2.Author + "\nHasMods = " +
                revObject2.HasModifications + "\nIsSvnItem = " +
                revObject2.IsSvnItem + "\nNeedsLocking = " +
                revObject2.NeedsLocking + "\nIsLocked = " +
                revObject2.IsLocked + "\nLockCreationDate = " +
                revObject2.LockCreationDate + "\nLockOwner = " +
                revObject2.LockOwner + "\nLockComment = " +
                revObject2.LockComment;
wcInfoString3 = "Revision = " + revObject3.Revision +
                "\nMin Revision = " + revObject3.MinRev +
                "\nMax Revision = " + revObject3.MaxRev +
                "\nDate = " + revObject3.Date +
                "\nURL = " + revObject3.Url + "\nAuthor = " +
                revObject3.Author + "\nHasMods = " +
                revObject3.HasModifications + "\nIsSvnItem = " +
                revObject3.IsSvnItem + "\nNeedsLocking = " +
                revObject3.NeedsLocking + "\nIsLocked = " +
                revObject3.IsLocked + "\nLockCreationDate = " +
                revObject3.LockCreationDate + "\nLockOwner = " +
                revObject3.LockOwner + "\nLockComment = " +
                revObject3.LockComment;
wcInfoString4 = "Revision = " + revObject4.Revision +
                "\nMin Revision = " + revObject4.MinRev +
                "\nMax Revision = " + revObject4.MaxRev +
                "\nDate = " + revObject4.Date +
                "\nURL = " + revObject4.Url + "\nAuthor = " +
                revObject4.Author + "\nHasMods = " +
                revObject4.HasModifications + "\nIsSvnItem = " +
                revObject4.IsSvnItem + "\nNeedsLocking = " +
                revObject4.NeedsLocking + "\nIsLocked = " +
                revObject4.IsLocked + "\nLockCreationDate = " +
                revObject4.LockCreationDate + "\nLockOwner = " +
                revObject4.LockOwner + "\nLockComment = " +
                revObject4.LockComment;

WScript.Echo(wcInfoString1);
WScript.Echo(wcInfoString2);
WScript.Echo(wcInfoString3);
WScript.Echo(wcInfoString4);

다음 목록은 C#에서 SubWCRev COM 객체를 사용하는 방법의 예시입니다.

using LibSubWCRev;
SubWCRev sub = new SubWCRev();
sub.GetWCInfo("C:\\PathToMyFile\\MyFile.cc", true, true);
if (sub.IsSvnItem == true)
{
    MessageBox.Show("versioned");
}
else
{
    MessageBox.Show("not versioned");
}

TortoiseSVN 홈페이지

한국어 中文