由于 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 指向未版本控制的目录,则对话框将询问要导出到 /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 设置中指定的外部差异程序。/path 指定第一个文件。如果设置了选项 /path2 ,则差异程序将使用这两个文件启动。如果省略 /path2 ,则在 /path 中的文件与其 BASE 之间进行差异比较。如果指定的文件也具有属性修改,则还会为每个修改的属性启动外部差异工具。要阻止这种情况,请传递选项 /ignoreprops 。要显式设置修订号,请使用 /startrev:xxx 和 /endrev:xxx ,对于可选的 peg 修订版,请使用 /pegrev:xxx 。如果设置了 /blame 并且未设置 /path2 ,则通过首先使用给定的修订版 blame 文件来完成差异比较。参数 /line:xxx 指定在显示差异时要跳转到的行。 |
:shelve | 将指定的路径搁置到新的搁置集中。选项 /shelfname:name 指定搁置集的名称。可以使用 /logmsg:message 指定可选的日志消息。如果传递了选项 /checkpoint ,则保留文件的修改。 |
:unshelve | 将名称为 /shelfname:name 的搁置集应用于工作副本路径。默认情况下,应用搁置集的最新版本,但您可以使用 /version:X 指定版本。 |
:showcompare |
根据要比较的 URL 和修订版,这将显示统一差异(如果设置了选项 必须指定选项 如果指定的 URL 也具有属性修改,则还会为每个修改的属性启动外部差异工具。要阻止这种情况,请传递选项 如果请求统一差异,则可以指定可选的 |
:conflicteditor | 使用 /path 中冲突文件的正确文件启动 TortoiseSVN 设置中指定的冲突编辑器。 |
: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