giao diện COM

Nếu bạn cần truy cập thông tin sửa đổi Subversion từ các chương trình khác, bạn có thể sử dụng giao diện COM SubWCRev. Các đối tượng để tạo ra là SubWCRev.object , và các phương pháp sau đây được hỗ trợ:

Bảng 6.4. các phương pháp COM / tự động hóa được hỗ trợ

Phương phápMô tả
.GetWCInfoPhương pháp này duyệt qua các bản sao hoạt động thu thập thông tin sửa đổi. Đương nhiên bạn phải gọi việc này trước khi bạn có thể truy cập thông tin bằng cách sử dụng các phương pháp còn lại. Tham số đầu tiên là đường dẫn. Tham số thứ hai nên là true nếu bạn muốn bao gồm các phiên bản thư mục. Tương đương với -f chuyển đổi dòng lệnh. Tham số thứ ba nên là true nếu bạn muốn bao gồm svn:externals. Tương đương với -e chuyển đổi dòng lệnh.
.GetWCInfo2The same as GetWCInfo() but with a fourth parameter that sets the equivalent to the -E command line switch.
.RevisionSửa đổi cam kết cao nhất trong các bản sao làm việc. Tương đương với $WCREV$ .
.DateNgày / thời gian của sửa đổi cam kết cao nhất. Tương đương với $WCDATE$ .
.AuthorTác giả của sửa đổi cam kết cao nhất, đó là, người cuối cùng thực hiện các thay đổi đối với bản sao làm việc.
.MinRevViệc sửa đổi cập nhật tối thiểu, như thể hiện trong $WCRANGE$
.MaxRevViệc sửa đổi cập nhật tối đa, như thể hiện trong $WCRANGE$
.HasModificationsTrue nếu có thay đổi địa phương
.HasUnversionedTrue if there are unversioned items
.UrlThay thế bằng URL kho lưu trữ của đường dẫn bản sao làm việc được sử dụng trong GetWCInfo . Tương đương với $WCURL$ .
.IsSvnItemTrue nếu mục đó được phiên bản.
.NeedsLockingTrue nếu mục có thuộc tính svn:needs-lock thiết lập.
.IsLockedTrue nếu mục bị khóa.
.LockCreationDateChuỗi đại diện cho ngày khi khóa được tạo ra, hoặc một chuỗi trống rỗng, nếu mục không bị khóa.
.LockOwnerChuỗi đại diện chủ sở hữu khóa hoặc chuỗi rỗng nếu mục không bị khóa.
.LockCommentCác thông báo đã nhập khi khóa được tạo ra.


Ví dụ sau đây cho thấy giao diện có thể được sử dụng như thế nào.

// 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ác danh sách sau đây là một ví dụ về cách sử dụng các đối tượng COM SubWCRev từ C #:

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");
}