SubWCRev 是一个 Windows 控制台程序,可用于读取 Subversion 工作副本的状态,并可选地在模板文件中执行关键字替换。这通常用作构建过程的一部分,作为将工作副本信息合并到您正在构建的对象中的方法。通常,它可能用于在“关于”框中包含修订号。
SubWCRev 读取工作副本中所有文件的 Subversion 状态,默认情况下不包括外部文件。它记录找到的最高提交修订号和该修订的提交时间戳,它还记录工作副本中是否存在本地修改或混合更新修订。修订号、更新修订范围和修改状态显示在标准输出上。
SubWCRev.exe 从命令行或脚本调用,并使用命令行参数控制。
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
WorkingCopyPath
是要检查的工作副本的路径。您只能对工作副本使用 SubWCRev,不能直接对存储库使用。路径可以是绝对路径,也可以是相对于当前工作目录的路径。
如果您希望 SubWCRev 执行关键字替换,以便将存储库修订和 URL 等字段保存到文本文件,则需要提供一个模板文件 SrcVersionFile
和一个输出文件 DstVersionFile
,其中包含模板的替换版本。
您可以为 SubWCRev 指定忽略模式,以防止考虑特定文件和路径。模式从名为 .subwcrevignore
的文件中读取。该文件从指定的路径以及工作副本根目录读取。如果文件不存在,则不忽略任何文件或路径。 .subwcrevignore
文件可以包含多个模式,用换行符分隔。模式与相对于存储库根目录的路径和相对于 .subwcrevignore
文件路径的路径匹配。例如,要忽略 TortoiseSVN 工作副本中 doc
文件夹中的所有文件,.subwcrevignore
将包含以下行
/trunk/doc /trunk/doc/*
或者,假设 .subwcrevignore
文件位于从 trunk 中检出的工作副本根目录中,使用以下模式
doc doc/*
与上面的示例相同。
要忽略所有图像,可以将忽略模式设置为以下内容
*.png *.jpg *.ico *.bmp
忽略模式区分大小写,就像 Subversion 一样。
要在 Windows 资源管理器中创建以点开头的文件,请输入 .subwcrevignore.
。注意尾部的点。
有一些可选开关会影响 SubWCRev 的工作方式。如果您使用多个开关,则必须将它们指定为一个组,例如 -nm
,而不是 -n -m
。
表 6.1. 可用命令行开关列表
开关 | 描述 |
---|---|
-n |
如果给出此开关,如果工作副本包含本地修改,SubWCRev 将以 ERRORLEVEL 7 退出。这可用于防止在存在未提交的更改的情况下进行构建。
|
-N |
如果给出此开关,如果工作副本包含未版本化的项目(未被忽略),SubWCRev 将以 ERRORLEVEL 11 退出。
|
-m |
如果给出此开关,如果工作副本包含混合修订版,SubWCRev 将以 ERRORLEVEL 8 退出。这可用于防止使用部分更新的工作副本进行构建。
|
-d |
如果给出此开关,如果目标文件已存在,SubWCRev 将以 ERRORLEVEL 9 退出。
|
-f | 如果给出此开关,SubWCRev 将包含文件夹的最后修改修订版。默认行为是仅在获取修订版号时使用文件。 |
-e |
如果给出此开关,SubWCRev 将检查包含在 svn:externals 中的目录,但前提是它们来自同一个存储库。默认行为是忽略外部。
|
-E |
如果给出此开关,与 -e 相同,但它会忽略具有显式修订版的外部,当它们内部的修订版范围仅是属性中给定的显式修订版时。因此,它不会导致混合修订版。
|
-x | 如果给出此开关,SubWCRev 将以十六进制输出修订版号。 |
-X | 如果给出此开关,SubWCRev 将以十六进制输出修订版号,并在前面加上 '0X'。 |
-F |
如果给出此开关,SubWCRev 将忽略任何 .subwcrevignore 文件并包含所有文件。
|
-q | 如果指定了此开关,SubWCRev 将执行关键字替换,但不会在标准输出中显示工作副本状态。 |
如果没有任何错误,SubWCRev 将返回零。但如果发生错误,错误消息将写入标准错误流并在控制台中显示。返回的错误代码如下:
表 6.2. SubWCRev 错误代码列表
错误代码 | 描述 |
---|---|
1 | 语法错误。一个或多个命令行参数无效。 |
2 | 命令行中指定的 文件或文件夹未找到。 |
3 | 无法打开输入文件,或无法创建目标文件。 |
4 | 无法分配内存。例如,如果源文件太大,就会发生这种情况。 |
5 | 无法正确扫描源文件。 |
6 | SVN 错误:当 SubWCRev 尝试从工作副本中查找信息时,Subversion 返回错误。 |
7 |
工作副本有本地修改。这需要 -n 开关。
|
8 |
工作副本有混合版本。这需要 -m 开关。
|
9 |
输出文件已存在。这需要 -d 开关。
|
10 | 指定的路径不是工作副本或其一部分。 |
11 |
工作副本中包含未版本控制的文件或文件夹。这需要 -N 开关。
|