命令行中使用VSS

Author:David Euler
Date: 2004/11/26
Email:de_euler-david@yahoo.com.cn 有任何问题,请与我联系:)

最近工作需要将三四百个DLL文件汇入到VSS数据库中,并且一个个打上Lable号,label号取的DLL的版本号(就是选中,点击鼠标邮件,属性里面可以看到的版本号),初步算了一下,这样几百个文件,一个Check out/Check in,再找到Label号,打上Label号,少说也要花上一两天的时间,这样实在是太慢了。下午希望能够通过在DotNet中编程来操作VSS数据库,于是查帮助文档,没有看到相关资料,倒是看到说VSS有命令行可以使用。于是网上搜了一下,也没看到几篇介绍VSS命令行的文章,还是看帮助文档吧,看了一个下午,一个晚上。再结合C#或者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.一些通用的命令行选项:
Option
Description

-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
  #  FIX: "Version Not Found" Error With Command Line GET   回复   

评论

 

原文地址
http://support.microsoft.com/default.aspx?scid=kb;EN-US;197050#appliesto

RESOLUTION
If all clients accessing the database are Visual SourceSafe version 6.0 or later, run DDUPD against the data directory to convert the database to the new format. If some clients are earlier versions of VSS, use the following workaround.

To work around this problem, select Options from the Tools menu. In the General tab, select the "Act on Projects Recursively" option (note that after changing this setting you must exit the VSS explorer for it to work on the command line). On the command line, use wildcards instead of the -r switch.

For example, if the command that is failing is: ss get $/myproj -r -vlbeta1

then use:
ss get $/myproj/*.* -vlbeta1

# Version Not Found  回复   

1。需要在sourcesafe 中设置 the General tab, select the "Act on Projects Recursively"
2。ss get $/myproj/*.* -vlbeta1

# re: 命令行中使用VSS  回复   

rem 设置ss的路径
rem PATH=%PATH%;D:/Microsoft Visual Studio/Common/VSS/win32

rem 设置当前目录为。。。
set path=%path%;D:/RScmp

rem 设置用户名口令
set ssuser=usercode
set sspwd=password

rem 设置需要连接的sourcesafe
set ssdir=//vssserver/vssdb

rem 设置工作路径 不知道为什么不好用
rem ss workfold $/rsdata D:/tmp/rsdata -I-

rem 可以直接指定用户名和口令 -GL 参数可以指定任意的目录
rem ss get -GLD:/tmp/rsdata $/rsdata -Yadmin,password -R -G -I-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值