4.4 其他操作(Other Use)51Testing软件测试网0B.B]\6Y6w
`
4.4.1 扩展关键字(Expand Keywords)*
K7QH-~'A3f4X0y
rb$M3A0 VSS可以将某些指定信息(例如:VSS内部版本号)直接插入文本文件中。用户只要将某些关键字放入文件的注释中,每次添加(Add)或签入(Check In)文件时,VSS都会自动查找这些关键字,并将相关信息置于其后。
?K*`
a"nQ09DZ x0Z$w]'H,}1CY0 VSS中常用的关键字:
关键字 | 描述 |
$Archive: $ | 文件在VSS中的路径名 |
$Author: $ | 最近一次更改文件的用户 |
$Date: $ | 最近一次签入的时间 |
$History: $ | 文件的历史记录 |
$Revision: $ | VSS内部版本号 |
$NoKeywords: $ | 使VSS对其后的所有关键字不进行扩展 |
51Testing软件测试网O P.D@3CQ5e W51Testing软件测试网9edh+TFk 例如:51Testing软件测试网``i5f6n
51Testing软件测试网a,s7fl0@(m:|t;H9Fr 在某文件中加入如下一行:
mgv/U'ex$a4HA0@N!rv3O.I o-B0 $Revision: $
-dBt`A#PX06Qin,q%h)c0 若当前该文件在VSS内部的版本号是22,则签入后VSS会将之修改为:51Testing软件测试网o%\P1N9`bK
w7@\!HgPzW0 $Revision: 23 $
O\+`z$ibsS04.4.2 使用Shadow目录(Work with Shadow Folders)*51Testing软件测试网0C&b]-]5Ao-y+xqw`J
!On&|j4T5nK0 Shadow目录位于服务器端,包含了工程中所有的文件。这些文件既非位于VSS数据库中的master copy,亦非位于本地工作目录的local copy,而是最近一次签入的所有内容。Shadow目录应该由管理员来设置。
\x)wob!Z3K051Testing软件测试网2}3a$~2p8nc1v!i 是否使用Shadow目录功能是可选的,通常在如下两种情况下可以考虑使用该功能:
- 为使某些用户能查看文件(但不能更改),这些用户可能没有对VSS的访问权限。
- 不让你的本地工作目录保留可编译的软件副本。为使每个用户都能得到一个最新版本的软件,所有用户可能希望在某个目录下集中进行编译,而非在各自的工作目录下编译。在这种情况下,Shadow目录功能通常和添加(Add)、签入(Check In)之后的Remove Local Copy结合使用。
51Testing软件测试网XSU[&Kv'mG[51Testing软件测试网7I`'t x3y:R+kp
Gz+ZRX6Mh mX-P}0 Shadow目录不会跟踪子工程的变化,例如:你有一个被Shadow的工程$/A,包含两个子工程:$/A/1和$/A/2,而你又将$/A/2重命名为$/A/B,这种变化将不会被反映到Shadow目录中。你可以手工修改,或者利用Reconcile All功能,使之保持同步。
v({+n6v2V[04.4.3 性能优化(Optimize Performance)*
,X-^)PQ,s0/w W8z5I@{2Q0N0 有两种方法可以改善VSS的性能:尽可能多的将内容通过网络拷贝至本地来做;修改初始化文件对VSS的性能进行微调。51Testing软件测试网y9t.k3iih@q
o+oh*};k&G3H0 具体优化措施:
- 在SS.INI或SRCSAFE.INI文件中设置如下变量:
g zNT5^B\0Diff_Ignore (PC) = c-e-s-w-
2o;K2uH#X`c!c0EuqmN:Z:s!t1I0使VSS在进行文件比较时忽略end-of-line标记,从而加快运行效率
:j1O-Z%BS+B0_s!``8NK0V0CP_OnSelection = No51Testing软件测试网F j?'P%twpa
51Testing软件测试网s4z&z4q8L在使用VSS Explorer时,缺省状态下,用户使用鼠标单击或使用键盘的方向键在工程列表上移动时,就会选中工程。设为No后,只有双击鼠标或按回车键才会选中。51Testing软件测试网:N BgZ'|7S
gk!L
- 设置临时目录51Testing软件测试网0LK7UfU
C
缺省情况下,VSS将临时文件存于服务器端,但管理员可以通过修改SS.INI中的Temp_Path变量,将临时路径设置在本地。
l+U7h#`!v*k{0 - 让管理员在SRCSAFE.INI文件中将Lock_Mode变量设置为Native51Testing软件测试网o)R.z8O}
这是SRCSAFE.INI中该变量的缺省设置,把该变量设置为Native将使几乎所有的VSS操作都得到加速。该变量只能由管理员来设置。
w!c{&G [9i3M_i0 - 管理员通过Disable下面的功能,也可以一定程度地改善性能:
51Testing软件测试网
\*[9sr(T
l+hn6N!{Em{}_x.o,u04.4.4 查找文件(Search for Files)51Testing软件测试网$xTX1L-c#iy
7Pe%@0`5UM0S
Pk/iW0 VSS Explore的list view缺省时只显示当前工程中的所有文件。通过使用Search命令,可以只显示符合指定要求的文件。例如:只显示.h文件,只现实被签出的文件。Search命令是允许递归的。51Testing软件测试网a9C*n(Z
O"Q'l}
4.4.5 设置密码(Set Passwords)51Testing软件测试网9KwnD3I{0k
#kO
X,}Qq'E0 如果VSS管理员指定域账号为VSS登录账号,则用户登录VSS时将不会提示输入密码。
n1iG?RD@ w04.4.6 编写批处理文件(Writing Batch Files)*
@;m~)n1b$eE0~6k8~0rWL/Y(o k0 在编写批处理文件时,一些在命令行方式下使用的交互手段需要改变。
` f$I`m%}051Testing软件测试网WIjK!Sh2e4|k- 屏蔽输入(Disable Input)
x4[Qh8m+B4F0如果你的批处理文件中包含了一系列VSS命令(它们可能需要整夜运行),你一定不希望程序执行期间会停下来提示用户输入信息。有3个命令行选项可以解决此类问题。
D0YD6?,^K.s*f051Testing软件测试网n:o-o"WP缺省时,VSS在执行诸如添加(Add)、签入(Check In)等操作时会提示你输入注释(Comment),利用-c选项可以避免该类提示:
命令 | 描述 |
-c- | 不添加注释 |
"-cHello" | 使用Hello字串作为注释 |
-c@COMMENT.TXT | 使用comment.txt文件的内容作为注释 |
51Testing软件测试网n1YV!U6v u;N
e"M5Z4n\6{T0此外,VSS通常会要求用户回答yes或no,你可以使用-i选项避免此类问题:
命令 | 描述 |
-i-y | 对所有此类提问自动回答Yes |
-i-n | 对所有此类提问自动回答No |
-i | 使用缺省回答 |
'B7S&]+Sc'a0|D051Testing软件测试网:N#xM:YW*rl%oCVSS也可能会提示登录名,你可以使用-y选项提供足够多的信息。
uo4sJN.l0 - 重定向输出
Xn2? Vy b#F0缺省时,VSS将所有输出定向到屏幕,在命令行状态下你可以使用-o选项分页输出,而在批处理文件中你同样可以利用-o屏蔽输出或重定向输出。
命令 | 描述 |
-o- | 屏蔽输出 |
-oRESULTS.TXT | 重定向所有输出到文本文件results.txt中,如果该文件已存在,输出内容将追加到该文件末尾。 |
51Testing软件测试网k)v4l:_n3XS - 使用命令行返回值51Testing软件测试网l.b(W^1b.U$t
在命令行状态下运行VSS时,VSS会设置一些返回值来标明运行状态。你可以在批处理文件中根据VSS的返回值采取相应措施。
返回值 | 描述 |
100 | 表明出错,例如:VSS无法找到数据库文件,或者你试图签出某个早已被签出的文件。 |
1 | 表明一个不是很严重的错误,将在如下三种情况下发生: ]*bn/T6RK0当你使用ss Dir时,没有找到任何条目。 joiWn+ui0当你使用ss Status时,至少有一项被签出。51Testing软件测试网)gZc?OE'ii 当你使用ss Diff时,至少有一个文件不一致。 t"EjVUp?5f0所有这些情况表明,即使本次操作是成功的,你执行的下一个VSS命令也可能操作失败。 |
0 | VSS成功执行。 |
7{-o&^!AU\f0
%vw$Pln051Testing软件测试网 S,]4X\:_Q
4.4.7 定制SS.INI和SRCSAFE.INI文件(Customize the SS.INI and SRCSAFE.INI Files)
'V0dtq
q0
BoHb5L0 VSS有两类初始化文件,它们包含了VSS的一些环境变量:SS.INI,每个用户都有一个这样的文件;SRCSAFE.INI,仅有一个,定义了VSS的一些全局变量,只有管理员才有权修改它。
H/B1W(^,G0附录 同时维护一个工程的多个版本(Maintain Multiple Versions of a Project)
U3y#`~7I1CH0Z/?
XPb[g"RfE8@0 你可以使用Share/Pin/Branch的方式,也可以使用Label方式。如果你所处的环境只要求少量的改动,比如:轻量级的patch,使用Label比较合适;如果你正在规划大量的开发内容,使用Share/Pin/Branch比较合适。例如:在软件处于Beta版时,你可以通过Label功能冻结(freeze)之,并同时修改Beta版的bug。当你正同时维护着某个产品的1.1版和2.0版时,合理的做法是,为每个版本创建一个新的工程,Share并Pin所有的文件,在需要的时候Branch。当1.1发布时,你可以将1.1版的工程Label,而后将对1.1版的改动重新Merge到2.0版中。下面的几个场景为你使用Label功能提供指导:
\|Zw2C`051Testing软件测试网7c#?!P4vB\场景1:理想情况
a6Vzqi9XYJ(YU0*tO7\al[01、对即将到达Beta 1版的工程进行开发和测试。
ik(T"a2r4z9Y9th02、当你认为时机适宜时,将之Label为"Beta 1"。51Testing软件测试网~7w"e$Qh-s
3、开始Beta 2版的工作。51Testing软件测试网z
^ V:?
L
51Testing软件测试网}3El,f3\8r场景2:文件A的某个版本被错误地包含在Beta 1版中
3OVfJ0A5]
Qu051Testing软件测试网aj7Z#z.AU3uQ;Z1、对即将到达Beta 1版的工程进行开发和测试。51Testing软件测试网k ~g$X)O-mu{
2、当你认为时机适宜时,将之Label为"Beta 1"。
Z\-]Rg-v,D JWm03、开始Beta 2版的工作。51Testing软件测试网c.c@(e+R p/i9_eU7?7w
4、如果发现文件A某一时期的版本被错误的包含在了Beta 1版中,选择该文件的正确版本并Label为"Beta 1"。
}I)];C M1sf!?05、获取(Get)Beta 1版的工程。51Testing软件测试网:cN'rW$q[
51Testing软件测试网y[F,br3c场景3:需将bug-fix后的文件A被包含在Beta 1版中,而其余文件未曾改动
hK^.H1l\d051Testing软件测试网FmO1c'o1、对即将到达Beta 1版的工程进行开发和测试。
!I)f"s
K-` M k+Q02、当你认为时机适宜时,将之Label为"Beta 1"。
"Y1T:B/l'TNP*VJ:D03、开始Beta 2版的工作。51Testing软件测试网${Rz(t:F:qo0X
4、你发现,包含在Beta 1版中文件A的那个版本存在bug,必须改正,而工程中的其余文件则不须改动。51Testing软件测试网0VW0J-LO+Ok)k4]
5、签出该文件,改正,然后签入。
,htBDrSX pJ06、将工程重新Lable为"Beta 1"(你将被询问是否确认删除原有标记)。
0o-Z#`?[4g04f9I0C]#FMkM0场景4:需将bug-fix后的文件A包含在Beta 1版中,而其余文件也作了改动
C+z H#h.A!X0ftUaex
b]:]01、对即将到达Beta 1版的工程进行开发和测试。51Testing软件测试网.K-?k~*v7|]*p
2、当你认为时机适宜时,将之Label为"Beta 1"。51Testing软件测试网I4U1P@t2B-?{;vD
3、开始Beta 2版的工作。
!v#Jrnb,|jOfk04、你发现,包含在Beta 1版中文件A的那个版本存在bug,必须改正,而工程中的其余文件已经改动过且已经被签入。51Testing软件测试网jkY!p
znn:Z \
5、签出该文件,改正,然后签入(此时该文件的VSS内部版本号将自动加1)。51Testing软件测试网IPBcH
NI Q
6、将该文件Label为"Beta 1"(和工程的Label同名),这将使该文件的现有版本被指定为"Beta 1"。
Wx6e|/_Z;i^9R051Testing软件测试网
x2Eg9p9Uw3b e h场景5:文件A的一个原有版本需要进行bug-fix,并加入Beta 1版中51Testing软件测试网4a_ g_$fD7E
9k$Um&DZS
C5rJ01、对即将到达Beta 1版的工程进行开发和测试。
Rs4A-[fGk:_%n02、当你认为时机适宜时,将之Label为"Beta 1"。51Testing软件测试网e:H whVv[!p\
o
3、开始Beta 2版的工作。51Testing软件测试网;w4K `C3b-z;o
4、你发现,包含在Beta 1版中文件A的那个版本存在bug,必须改正。例如:文件的当前内部版本号是6,且包含了为达到Beta 2版所做的某些改动,而你不希望将这些改动并入Beta 1版中。51Testing软件测试网KOW-x*c(vM\Y[
5、签出文件A(Version 6)51Testing软件测试网%D.Wl#{2A3XDU
6、获取Version 4,覆盖Version 6的本地版本。
4Lm3n4xvh07、修改该文件Beta 1版中的bug,然后签入。这将使文件A的内部版本号升至7(Version 4的内容加上bug-fix后的内容,但没有包含Version 5和Version 6的内容)
8]!nT kff}08、将Version 7 Label为"Beta 1"。这将使文件A的Version 7版被指定为"Beta 1"。现在,如果你尝试获取Beta 1版的工程时,你将会得到包含bug-fix后的文件A(被单独Label)连同原来Label为"Beta 1"的工程中的其余文件。51Testing软件测试网;t:y'Y(a+[4Er
9、为了继续Beta 2版的工作,需要恢复在Version 5和Version 6上的改动,再次签出文件A(Version 7)51Testing软件测试网H:FZz7\I
10、获取Version 6。
^rH @JM011、覆盖Version 7的本地版本,或合并之(这将使本地版本变成Version 6的内容加上你在Version 7中为"Beta 1"所做的bug-fix)。51Testing软件测试网T&J"m-Rg8{6k
@R`Hf
12、继续修改文件A的本地版本直到你满意,然后签入。这将产生文件A的Version 8,现在你将可以继续Beta 2版的工作了。51Testing软件测试网s^7tkNJooM