SubWCRev是Windows的命令行工具,可以阅读Subversion工作拷贝的状态,可以在模版中随意执行关键字替换。这通常是构建过程的一部分,将工作拷贝信息结合到创建的对象当中。通常情况下,可能是用来将修订版本号存入“关于”窗口。
6.1. SubWCRev命令行
SubWCRev阅读工作拷贝中所有文件的状态,缺省会忽略外部引用。它记录找到的最高修订版本号,以及那个修订版本的提交时间戳,它也会记录在本地工作拷贝是否有修改,或混合的修订版本。修订版本号码,更新修订版本范围和修改状态会显示在标准输出。
SubWCRev.exe从命令行或脚本中运行,使用命令行参数控制。
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
WorkingCopyPath是要检查的工作拷贝路径,你可以只对工作拷贝使用SubWCRev,而不是直接对版本库,这个路径可以是绝对路径,也可以是工作目录的相对路径。
如果你想让SubWCRev执行关键字替换,象版本库版本,地址等字段保存到文本文件,就需要提供一个模版文件SrcVersionFile,输出文件DstVersionFile就是模版替换之后的版本。
有几个开关影响 SubWCRev工作。如果使用多个,必须用单个组指定,例如要用-nm,不能用-n -m。
表 6.1. 列出可用的命令行开关
|
切换 |
描述 |
|---|---|
|
-n |
如果给出这个开关,当工作副本包含本地修改时,SubWCRev 就会以ERRORLEVEL 7退出。它可以用来在有未提交的修改时阻止构建。 |
|
-m |
如果给出这个开关,当工作副本包含混合版本时,SubWCRev 就会以ERRORLEVEL 8退出。它可以用来在部分更新本地目录时阻止构建。 |
|
-d |
如果给出这个开关,当目的文件存在时时,SubWCRev 就会以ERRORLEVEL 9退出。 |
|
-f |
如果给出这个开关,SubWCRev 就会包含文件夹的最后修改版本。默认行为是取得版本号时只考虑文件。 |
|
-e |
如果给出这个开关,SubWCRev 就会检查包含svn:externals的目录,但是只限于在同一版本库。默认行为是忽略外部引用。 |
6.2. 关键字替换
如果提供了源文件和目的文件,SubWCRev 会复制源文件到目标文件,执行如下所属的关键字替换:
表 6.2. 列出可用的命令行开关
|
关键字 |
描述 |
|---|---|
|
$WCREV$ |
用工作拷贝中最高的提交版本来替换 |
|
$WCDATE$ |
用最高提交的版本的日期/时间替换。为了避免混淆,使用国际化格式,例如 |
|
$WCNOW$ |
用当前的系统日期/时间替换。它用来指出构建时间。同样为了避免混淆,使用国际化格式。 |
|
$WCRANGE$ |
在工作目录用更新版本范围替换。如果工作目录处于一致的状态,它是一个单一版本。如果工作目录包含混合版本,或者是过时,或者是故意更新到版本,那么这个范围会用象100:200这样的格式来显示。 |
|
$WCMIXED?TText:FText$ |
当有混合版本时用TText 替换,否则用FText替换。 |
|
$WCMODS?TText:FText$ |
若本地存在修改,就用正确提示文本 TText 替换,否则用失败提示文本 FText 替换。 |
|
$WCURL$ |
用传递给SubWCRev的工作目录的版本库地址替换。 |
6.3. 关键字例子
下面的例子显示了模版文件中的关键字是如何在输出文件中被替换的。
// Test file for SubWCRev char *Revision = "$WCREV$"; char *Modified = "$WCMODS?Modified:Not modified$"; char *Date = "$WCDATE$"; char *RevRange = "$WCRANGE$"; char *Mixed = "$WCMIXED?Mixed revision WC:Not mixed$"; char *URL = "$WCURL$"; #if $WCMODS?1:0$ #error Source is modified #endif // EndOfFile
SubWCRev.exe运行完之后,输出文件类似:
// Test file for SubWCRev char *Revision = "3701"; char *Modified = "Modified"; char *Date = "2005/06/15 11:15:12"; char *RevRange = "3699:3701"; char *Mixed = "Mixed revision WC"; char *URL = "http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/src/SubWCRev"; #if 1 #error Source is modified #endif // EndOfFile
附录 A. 常见问题(FAQ)
因为TortoiseSVN一直处于开发状态,所以有时很难保持文档完全是最新的。
我们在维护了一份交互式的在线FAQ。那里面包括了TortoiseSVN邮件列表<dev@tortoisesvn.tigris.org>里最常被问到的问题。
我们还在维护了一个项目问题跟踪系统。在那里面可以查到哪些功能已
经被加到了我们的To Do列表里,哪些错误已经被修正了。如果你认为发现了一个错误
,或者需要一个新功能,请先到那里看看是否其他人已经在你之前提出过相同的内容了。
如果有一个问题在其他任何地方都找不到答案,提出这个问题的最好方式是通过邮件列表。
