SubWCRev 是一个 Windows 控制台程序,可以用来读取 Subversion 工作副本的状态,并可选择在模板文件中执行关键字替换。这通常用作构建过程的一部分,作为将工作副本信息合并到您正在构建的对象中的一种手段。 典型的用法可能是将修订版本号包含在“关于”框中。
SubWCRev 读取工作副本中所有文件的 Subversion 状态,默认情况下排除外部引用。 它记录找到的最高提交修订版本号以及该修订版本的提交时间戳,它还记录工作副本中是否存在本地修改或混合更新修订版本。 修订版本号、更新修订版本范围和修改状态将显示在 stdout 上。
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 将执行关键字替换,而不在 stdout 上显示工作副本状态。 |
如果没有错误,SubWCRev 返回零。 但是,如果发生错误,错误消息将写入 stderr 并在控制台中显示。 返回的错误代码是
表 6.2. SubWCRev 错误代码列表
错误代码 | 描述 |
---|---|
1 | 语法错误。 一个或多个命令行参数无效。 |
2 | 在命令行上指定的文件或文件夹未找到。 |
3 | 输入文件无法打开,或者目标文件无法创建。 |
4 | 无法分配内存。 如果源文件太大,可能会发生这种情况。 |
5 | 源文件无法正确扫描。 |
6 | SVN 错误:当 SubWCRev 尝试从工作副本中查找信息时,Subversion 返回了错误。 |
7 | 工作副本有本地修改。 这需要 -n 开关。 |
8 | 工作副本有混合修订版本。 这需要 -m 开关。 |
9 | 输出文件已存在。 这需要 -d 开关。 |
10 | 指定的路径不是工作副本或其一部分。 |
11 | 工作副本中有未版本控制的文件或文件夹。 这需要 -N 开关。 |