由于所有 TortoiseSVN 命令都通过命令行参数控制,因此您可以使用批处理脚本对其进行自动化,或从其他程序(例如您最喜欢的文本编辑器)启动特定命令和对话框。
请记住,TortoiseSVN 是一个 GUI 客户端,本自动化指南向您展示如何使 TortoiseSVN 对话框出现以收集用户输入。如果您想编写一个不需要输入的脚本,则应使用官方 Subversion 命令行客户端。
TortoiseSVN GUI 程序称为 TortoiseProc.exe
。所有命令都通过参数 /command:abcd
指定,其中 abcd
是所需的命令名称。大多数这些命令至少需要一个路径参数,该参数通过 /path:"some\path"
给出。在下表中,命令指的是 /command:abcd
参数,路径指的是 /path:"some\path"
参数。
有一个特殊的命令不需要参数 /command:abcd
,但是,如果命令行上没有指定任何内容,则会启动项目监视器。如果指定了 /tray
,则项目监视器会隐藏启动,并且只将它的图标添加到系统托盘。
由于某些命令可以接受目标路径列表(例如,提交多个特定文件),因此 /path
参数可以接受多个路径,用 *
字符分隔。
您还可以指定一个包含路径列表的文件,路径之间用换行符分隔。该文件必须为 UTF-16 格式,不带 BOM 。如果您传递这样的文件,请使用 /pathfile
而不是 /path
。要让 TortoiseProc 在命令完成后删除该文件,您可以传递参数 /deletepathfile
。如果您没有传递 /deletepathfile
,则必须自己删除该文件,否则该文件将被保留。
用于提交、更新和更多命令的进度对话框通常在命令完成后保持打开状态,直到用户按下
按钮。这可以通过在设置对话框中选中相应的选项来更改。但是,使用该设置将关闭进度对话框,无论您是从批处理文件还是从 TortoiseSVN 上下文菜单启动命令。
要指定配置文件的不同位置,请使用参数 /configdir:"path\to\config\directory"
。这将覆盖默认路径,包括任何注册表设置。
要自动关闭命令结束时的进度对话框,而不使用永久设置,您可以传递 /closeonend
参数。
/closeonend:0
不自动关闭对话框
/closeonend:1
如果没有错误,则自动关闭
/closeonend:2
如果没有错误和冲突,则自动关闭
/closeonend:3
如果没有错误、冲突和合并,则自动关闭
要关闭本地操作的进度对话框(如果没有任何错误或冲突),请传递 /closeforlocal
参数。
下表列出了可以使用 TortoiseProc.exe 命令行访问的所有命令。如上所述,这些命令应以 /command:abcd
的形式使用。在表格中,/command
前缀被省略以节省空间。
表 D.1. 可用命令和选项列表
命令 | 描述 |
---|---|
:about | 显示关于对话框。如果没有给出命令,也会显示此对话框。 |
:log |
打开日志对话框。
SVN 日期修订版可以采用以下格式之一
|
:checkout |
打开签出对话框。
如果指定了 |
:import |
打开导入对话框。 /path 指定包含要导入数据的目录。您还可以指定 /logmsg 开关以将预定义的日志消息传递到导入对话框。或者,如果您不想在命令行上传递日志消息,请使用 /logmsgfile:path ,其中 path 指向包含日志消息的文件。
|
:update |
将 /path 中的工作副本更新到 HEAD。如果给出了选项 /rev ,则会显示一个对话框,要求用户选择要更新到的修订版。要避免对话框,请指定修订版号 /rev:1234 。其他选项包括 /nonrecursive 、 /ignoreexternals 和 /includeexternals 。 /stickydepth 表示指定的深度应该是粘性的,从而创建稀疏签出。 /skipprechecks 可以设置为跳过更新之前执行的所有检查。如果指定了此选项,则 显示日志 按钮将被禁用,并且更新后显示差异的上下文菜单也将被禁用。
|
:commit |
打开提交对话框。 /path 指定目标目录或要提交的文件列表。您还可以指定 /logmsg 开关以将预定义的日志消息传递到提交对话框。或者,如果您不想在命令行上传递日志消息,请使用 /logmsgfile:path ,其中 path 指向包含日志消息的文件。要预先填充错误 ID 框(如果您已正确设置了与错误跟踪器的集成),您可以使用 /bugid:"the bug id here" 来执行此操作。
|
:add |
将 /path 中的文件添加到版本控制。
|
:revert |
还原工作副本的本地修改。 /path 指定要还原的项目。
|
:cleanup |
清理中断或中止的操作,并解锁 /path 中的工作副本。您还需要传递 /cleanup 才能真正执行清理。使用 /noui 可防止结果对话框弹出(无论是告知清理已完成还是显示错误消息)。/noprogressui 也禁用进度对话框。 /nodlg 禁用显示清理对话框,用户可以在其中选择清理中应该执行的操作。可以使用选项 /cleanup (用于状态清理)、/breaklocks (用于解除所有锁定)、/revert (用于还原未提交的更改)、/delunversioned 、/delignored 、/refreshshell 、/externals 、/fixtimestamps 和 /vacuum 指定可用的操作。
|
:resolve |
将 /path 中指定的冲突文件标记为已解决。如果给出 /noquestion ,则在不先询问用户是否真的应该执行操作的情况下进行解决。
|
:repocreate |
在 /path 中创建仓库。
|
:switch |
打开切换对话框。 /path 指定目标目录,/url 指定要切换到的 URL。
|
:export |
将 /path 中的工作副本导出到另一个目录。如果 /path 指向未版本化的目录,则会弹出一个对话框,要求提供一个 URL,以将 /path 中的目录导出到该 URL。如果您指定了键 /blockpathadjustments ,则会阻止自动导出路径调整。
|
:dropexport |
将工作副本中的 /path 导出到 /droptarget 指定的目录。此导出不使用导出对话框,而是直接执行。选项 /overwrite 指定覆盖现有文件,无需用户确认,选项 /autorename 指定如果文件已存在,则导出文件将自动重命名以避免覆盖。选项 /extended 可以指定 localchanges 仅导出本地更改的文件,或 unversioned 还导出所有未版本化的项目。
|
:dropvendor |
将 /path 中的文件夹递归复制到 /droptarget 指定的目录。新文件会自动添加,目标工作副本中缺少的文件会被删除,基本上确保源和目标完全相同。指定 /noui 跳过确认对话框,并指定 /noprogressui 也禁用显示进度对话框。
|
:merge |
打开合并对话框。 /path 指定目标目录。要合并修订版本范围,可以使用以下选项: /fromurl:URL 、 /revrange:string 。要合并两个存储库树,可以使用以下选项: /fromurl:URL 、 /tourl:URL 、 /fromrev:xxx 和 /torev:xxx 。
|
:mergeall |
打开全部合并对话框。 /path 指定目标目录。
|
:copy |
打开分支/标签对话框。 /path 是要从中分支/标记的工作副本。 /url 是目标 URL。如果 URL 以 ^ 开头,则假定它相对于存储库根目录。要选中 将工作副本切换到新分支/标签 选项,可以传递 /switchaftercopy 开关。要选中 创建中间文件夹 选项,可以传递 /makeparents 开关。您还可以指定 /logmsg 开关,将预定义的日志消息传递到分支/标签对话框。或者,如果您不想在命令行上传递日志消息,请使用 /logmsgfile:path ,其中 path 指向包含日志消息的文件。
|
:settings | 打开设置对话框。 |
:remove |
从版本控制中删除 /path 中的文件。
|
:rename |
重命名 /path 中的文件。文件的新的名称将通过对话框询问。要避免询问一步重命名类似文件,请传递 /noquestion 。
|
:diff |
启动在 TortoiseSVN 设置中指定的外部 diff 程序。选项 /path 指定第一个文件。如果设置了选项 /path2 ,则使用这两个文件启动 diff 程序。如果省略了 /path2 ,则在 /path 中的文件与其 BASE 之间进行 diff。如果指定的文件也具有属性修改,则也会为每个修改的属性启动外部 diff 工具。要防止这种情况,请传递选项 /ignoreprops 。要显式设置修订版本号,请使用 /startrev:xxx 和 /endrev:xxx ,并为可选的挂钩修订版本使用 /pegrevision:xxx 。如果设置了 /blame 并且未设置 /path2 ,则首先使用给定的修订版本对文件进行 blame,然后进行 diff。参数 /line:xxx 指定在显示 diff 时要跳转到的行。
|
:shelve |
将指定路径保存在一个新的搁置区中。选项 /shelfname:name 指定搁置区的名称。可以使用 /logmsg:message 指定可选的日志消息。如果传递了选项 /checkpoint ,则会保留文件的修改。
|
:unshelve |
将名称为 /shelfname:name 的搁置区应用于工作副本路径。默认情况下,将应用搁置区的最新版本,但可以使用 /version:X 指定版本。
|
:showcompare |
根据要比较的 URL 和修订版本,此命令将显示统一 diff(如果设置了选项
必须指定选项
如果指定的 URL 也具有属性修改,则也会为每个修改的属性启动外部 diff 工具。要防止这种情况,请传递选项
如果请求统一 diff,则可以指定可选的 |
:conflicteditor |
使用 TortoiseSVN 设置中指定的冲突编辑器启动 /path 中冲突文件的正确文件。
|
:relocate |
打开重定位对话框。 /path 指定要重定位的工作副本路径。
|
:help | 打开帮助文件。 |
:repostatus |
打开检查修改对话框。 /path 指定工作副本目录。如果指定了 /remote ,则对话框在启动时立即联系存储库,就像用户单击了 检查存储库 按钮一样。
|
:repobrowser |
启动存储库浏览器对话框,指向
可以使用附加选项
如果
如果指定了 |
:ignore |
将 /path 中的所有目标添加到忽略列表,即向这些文件添加 svn:ignore 属性。
|
:blame |
打开
如果设置了选项
如果设置了选项
还支持选项 |
:cat |
将 /path 中给出的 URL 或工作副本路径中的文件保存到 /savepath:path 中给出的位置。修订版在 /revision:xxx 中给出。这可用于获取具有特定修订版的文件。
|
:createpatch |
为 /path 中给出的路径创建补丁文件。要跳过文件“另存为”对话框,您可以传递 /savepath:path 来指定直接保存补丁文件的路径。要防止统一差异查看器启动并显示补丁文件,请传递 /noview 。如果请求统一差异,则可以指定可选的 prettyprint 选项,该选项将以更易于用户阅读的格式显示合并信息属性。
|
:revisiongraph |
显示
要为特定路径创建修订图的图像文件,但不显示图形窗口,请使用
由于修订图有许多影响其显示方式的选项,您还可以设置在创建输出图像文件时使用的选项。使用 |
:lock |
锁定 /path 中给定的文件或目录中的所有文件。将显示“锁定”对话框,以便用户可以输入锁定的注释。
|
:unlock |
解锁 /path 中给定的文件或目录中的所有文件。
|
:rebuildiconcache |
重建 Windows 图标缓存。仅当 Windows 图标损坏时才使用此命令。此命令的副作用(无法避免)是桌面上的图标将重新排列。要抑制消息框,请传递 /noquestion 。
|
:properties |
显示 要处理版本化的属性,此命令需要一个工作副本。
如果
要直接为特定属性打开属性对话框,请将属性名称作为 |
:sync |
导出/导入设置,具体取决于当前设置或导出设置哪个更新,或根据指定的方式进行操作。
如果使用
参数
如果既没有指定
如果指定了
如果指定了
参数 |
示例(应在一行上输入)
TortoiseProc.exe /command:commit /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt" /logmsg:"test log message" /closeonend:0 TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0 TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt" /startrev:50 /endrev:60 /closeonend:0