最近工作需要將三四百個DLL文件匯入到VSS數據庫中,并且一個個打上Label號,label號取的DLL的版本號(就是選中,點擊鼠標郵件,屬性里面可以看到的版本號),初步算了一下,這樣幾百個文件,一個Check out/Check in,再找到Label號,打上Label號,少說也要花上一兩天的時間,這樣實在是太慢了。下午希望能夠通過在DotNet中編程來操作VSS數據庫,于是查幫助文檔,沒有看到相關資料,倒是看到說VSS有命令行可以使用。于是網上搜了一下,也沒看到幾篇介紹VSS命令行的文章,還是看幫助文檔吧,看了一個下午,一個晚上。再結合C?;蛘逤/C++的使用,基本上以后可以實現自動Check Out/Check In并且自動打Label號了。簡單總結了一下,下面是VSS的一些常用命令和操作:
1.setup environment variable: //指向ss.exe所在的路徑
path=%path%;C:\Program Files\Microsoft Visual Studio\VSS\win32
2.指向VSS數據庫的所在目錄
set SSDIR=\\gqa-eric-lv\VSS\
set SSDIR=\\Guruvss\erp$\
3.登陸VSS:
ss CP -Yeric,eric123 -I- -s\\gqa-eric-lv\vss
4.獲取任一目錄的任一文件到本機(下例將$/ASP.Net/DataGridTest/index.aspx文件get到D:\tmp目錄)
ss get -GLD:\tmp $/ASP.Net/DataGridTest/index.aspx
(ss get, -GLpath Copies a file to the specified folder, not to the current or working folder. )
5.分屏顯示目錄ASP.Net中的所有文件和文件夾(包括子文件):
ss dir $/ASP.Net -R|more (另外,有-I -V 兩個參數,作用未知)
6.set Current Project:
ss cp $/SQL-sample
7.vss命令行是大小寫不敏感的;命令行中的命令不需要全名,同sql一樣,只要是可以識別的名字及可,如Dir就是directory的縮寫;
(遵守UNC通用命名規則,Universal Naming Convention)
8.一些通用的命令行選項:
-C 為指定項(可以是多項)做注釋 (Dir例外)
-O 重定向命令
-V?操作某項的指定版本
-R Perform a command recursively.
-S Turn SmartMode on or off for the command.
-G Change the way the Get command works on any file retrieved to the local drive.
-W 指明本機副本是否只讀(使用此參數,表示writable)
-N 在長短文件名兩種模式間切換
-I 任何環境下都不提示輸入
-Y 指定用戶名和密碼
-?, -H 兩個參數的作用都是獲得在線的幫助
9.命令中有空格時,用雙引號括起整個選項,如用ss CP "-Yeric Lv",eric123 而不用ss CP -Y"eric lv",eric123,
10.啟動圖形界面:ssexp -s\\gqa-eric-lv\vss
11.ss命令中,/表示VSS的當前目錄,$/表示根目錄,常用操作命令如下:
ss Add TEST.C "My long filename.H" ,把TEST.C和"My long filename.H"兩個文件添加到當前項目;
ss Add -R *,把當前目錄的所有文件及文件夾(包括子文件夾、文件)添加到當前項目;
ss ADD -D- *.DLL,添加當前目錄的所有DLL文件到當前項目,但不保留VSS上的歷史文件(以節省空間);
ss Checkout TEST.C TEST.H Checkout當前項目中的兩個文件
ss Checkout $/TESTDATA/TEST.C Checkout指定項目中的文件
ss Checkout -R $/TESTDATA 循環Check項目$/TESTDATA
ss Comment TEST.C -V5 改變TEST.C的版本號為5的版本注釋
ss Comment TEST.C 改變TEST.C的最新版本的注釋
ss Comment $/TESTDATA 改變項目$/TESTDATA的注釋
ss Create $/WORD VSS的根目錄下,創建項目WORD
ss Create WORD VSS的當前目錄下,創建項目WORD
ss Cp $/WORD 設置$/WORD為Current Project
ss Cp .. 跳轉到當前項目的父項目
ss Delete $/PRJ/TEST.C 刪除文件TEST.C (delete命令刪除的文件,可以用直接add命令回復,如Add test.C)
ss Delete $/PRJ 刪除項目 (不可以有兩個同名的文件被delete,因為沒有真正刪除)
ss -S Delete *.* 刪除所有文件,-S表示刪除VSS上的文件之后,刪除本機文件
ss Destroy $/PRJ/TEST.C 持久刪除文件(不可恢復)
ss Destroy $/PRJ 持久刪除項目
12.其他的更改操作有:label,merge,move,password,purge,recover,rename,rollback,share,undocheckout,workfold,branch等命令,這些命令會改變VSS數據庫的內容或者環境。
13.VSS命令行中的比較/查找/顯示等不改變數據庫和環境的命令: diff,dir,FileType,Get,help,history,links,paths,project,properties,status,view,whoami
14.顯示最近的Version,Label信息:SS properties
15.顯示Checkout的文件:SS Status
Technorati : Microsoft, VSS