跳到主要內容

[C#] 如何以程式自動化到Visual SourceSafe中抓取特定Label的版本,以及抓取特定Project下的Label歷史紀錄


當以Visual SourceSafe作為版控工具時,如有一tool可自行在Label建立時幫忙抓取,並讓之後人工或自動化Job進行編譯對開發者來說,是相當便利的

本文則以Sample Code進行抓取特定Label版本,以及抓取Label歷史紀錄


Source file
01         // 存放VSS Label資訊結構  added by chi hsu chen 20161224
02         public struct LabelInfo
03         {
04             public string filename;
05             public string lable;
06             public string date;
07             public string lablecomment;
08             public string action;
09             public string username;
10         };
11 
12         //23. by label取得project下特定lable的snapshot到本機目錄  added by chi hsu chen 20161224
13         public void getLabelVersion(string lsLabel, string lsProjectName, string lsOutPath)
14         {
15             try
16             {
17                 if (System.IO.Directory.Exists(lsOutPath) == false)
18                     return;
19 
20                 vssdb.get_VSSItem(lsProjectName,false).get_Version(lsLabel).Get(ref lsOutPath, (int)VSSFlags.VSSFLAG_RECURSYES + (int)VSSFlags.VSSFLAG_USERRONO);
21 
22                 return;
23             }
24             catch (System.Runtime.InteropServices.COMException cmo)
25             {
26                 return;
27             }
28         }
29 
30         //24. 取得給定路徑下的所有label資訊  added by chi hsu chen 20161224
31         public List<LabelInfo> getLabels(string lsProjectName)
32         {
33             List<LabelInfo> lsResult = new List<LabelInfo>();
34             
35             try
36             {
37                 VSSItem item = vssdb.get_VSSItem(lsProjectName, false);
38                 IVSSVersions versions = item.get_Versions();
39 
40                 foreach (IVSSVersion v in versions)
41                 {
42                     if (v.Label.Length > 0)
43                     {
44                         LabelInfo tLable=new LabelInfo();
45 
46                         tLable.lable = v.Label;
47                         tLable.date = v.Date.ToString();
48                         tLable.lablecomment = v.LabelComment;
49                         tLable.action = v.Action;
50                         tLable.username = v.Username;
51                         tLable.filename = v.VSSItem.Name;
52 #if (DEBUG)
53                         Console.WriteLine("Label=" + v.Label);
54                         Console.WriteLine("Date=" + v.Date.ToString());
55                         Console.WriteLine("LabelComment=" + v.LabelComment);
56                         Console.WriteLine("Action = " + v.Action);
57                         Console.WriteLine("Username" + v.Username);
58                         Console.WriteLine("filename=" + v.VSSItem.Name);
59 #endif
60                         lsResult.Add(tLable);
61                     }
62                 }
63 
64                 return lsResult;
65             }
66             catch (System.Runtime.InteropServices.COMException cmo)
67             {
68                 return null;
69             }
70         }
張貼留言

這個網誌中的熱門文章

[遊記] 20160710 廈門 - 中山路步行街,鼓浪嶼

此次趁出差之便,於周末從廈門翔安區到島內搭船到鼓浪嶼來看看這素有海上花園之稱的地方


[遊記] 20161018-19 美西自由行Day 4-5:優勝美地國家公園(Yosemite National Park) @ California, US

優勝美地國家公園,雖然不知道中文譯名是從何而來的,但實際到此體會才知道這個譯名實如其名

Glacier Point眺看半圓頂(Half Dome)