如何通过命令行使用TortoiseSVN ?

我使用TortoiseSVN,并希望使用命令行SVN选项。

我使用命令:

svn checkout [-N] [--ignore-externals] [-r rev] URL PATH

并得到以下错误:

'svn'不能被识别为内部或外部命令

是因为我需要添加一些环境变量吗?或者不能从命令行使用TortoiseSVN ?

426397 次浏览

TortoiseSVN有一个可用于TortoiseSVN GUI自动化的命令行界面,它不同于普通的Subversion界面。

你可以在文档中找到关于TortoiseSVN命令行选项的信息: 附录D.自动化TortoiseSVN。这里要使用的主要程序是TortoiseProc.exe。< / p >

但是在最上面已经写着:

记住,TortoiseSVN是一个GUI客户端,这个自动化指南向您展示了如何使TortoiseSVN对话框出现以收集用户输入。如果希望编写不需要输入的脚本,则应该使用官方的Subversion命令行客户端。

另一种选择是安装Subversion二进制文件。Slik SVN文件是一个很好的构建(并且不需要像Collabnet那样注册)。如果您选择安装,最近版本的TortoiseSVN还包括命令行客户端。

默认情况下,TortoiseSVN总是有一个与之相关的GUI(图形用户界面)。但是在安装程序(1.7版本及更高版本)上,您可以选择“命令行客户端工具”选项,这样您就可以从命令行调用svn命令(如svn commit和svn update)。

这是安装程序中“命令行客户端工具”选项的截图,你需要确保你选择了它:

How-to-install-TortoiseSvn-CommandLineTools

选择“SVN命令行工具”后,它会变成这样:

Enter image description here

要使用命令支持,您应该遵循以下步骤:

  1. 在环境变量中定义路径:

    • 开放“系统属性”;
    • 在“先进的”选项卡上单击“环境变量”按钮
    • 在“系统变量”部分中选择“路径”选项并单击“编辑
    • 附加变量值和TortoiseProc.exe文件的路径,例如:

      C:\Program Files\ TortoiseSVN \ bin < / p >

    • 李< / ul > < / >
    • 既然你已经注册了TortoiseProc,你可以根据TortoiseSVN 文档在中使用它。

      例子:

      < p > TortoiseProc.exe /命令:提交 /路径:" c: \ svn_wc \中* c: \ svn_wc \ file2.txt” /logmsg:"test log message" /closeonend:0

      . txt文件

      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

注:要使用友好的名称,如'svn'而不是'TortoiseProc',请将'svn.bat'文件放在'TortoiseProc.exe'目录中。这里有一个svn.bat的例子:

TortoiseProc.exe %1 %2 %3

正如Joey指出的,TortoiseSVN有自己的命令行语法。不幸的是,如果你习惯了svn命令,它是相当丑陋的,并且它忽略了当前的工作目录,因此它不是很有用——除了脚本。

我创建了一个小的Python程序(tsvn),它尽可能地模仿svn命令行语法,并相应地调用TortoiseSVN。因此,调用普通命令行工具和调用TortoiseSVN之间的区别在开始时被简化为一个小字母t

我的tsvn程序尚未完成,但已经有用。它可以在芝士店找到(https://pypi.python.org/pypi/tsvn/)

若要重新运行TortoiseSVN安装程序,请选择“修改”(允许用户更改特性的安装方式)并安装“命令行客户端工具”。

我的解决方案是使用dos命令为我最常用的命令设置一些别名:

DOSKEY svc=TortoiseProc.exe /command:commit /path:.
DOSKEY svu=TortoiseProc.exe /command:update /path:.
DOSKEY svl=TortoiseProc.exe /command:log /path:.
DOSKEY svd=TortoiseProc.exe /command:diff /path:$*

谷歌"doskey persist"提供关于如何设置一个.cmd文件的技巧,该文件在每次打开命令提示符时运行,就像Unix中的。*rc文件一样。

过了一段时间,我用了这个变通办法……

(在.bat文件中)

SET "CHECKOUT=http://yoururl.url";
SET "PATH=your_folder_path"


start "C:\Program Files\TortoiseSVN\bin" svn.exe checkout %CHECKOUT% %PATH%

我获取SVN命令的方法是从TortoiseSVN目录复制.exe和.dll文件,并将它们粘贴到system32文件夹中。

您还可以从TortoiseSVN目录执行命令,并为每个命令添加工作目录的路径。例如:

C:\Program Files\TortoiseSVN\bin> svn st -v C:\checkout

将bin添加到路径中应该可以使它在不复制文件的情况下工作,但对我来说它不起作用。

如果你已经安装了TortoiseSVN GUI并且想知道如何升级到命令行工具,下面是步骤…

  1. 进入Windows控制面板→程序和功能 (Windows 7+)
  2. 找到TortoiseSVN并单击它。
  3. 从可用选项中选择“更改”。
  4. 参考此图像了解进一步步骤。

    TortoiseSVN Command Line Enable . < / p >

  5. 在完成命令行客户端工具之后,打开命令提示符并键入svn help以检查成功安装。

有一个混乱,导致许多TortoiseSVN用户使用错误的命令行工具,而实际上他们正在寻找svn.exe命令行客户端。

我应该做什么或者不能从命令行使用TortoiseSVN ?

svn.exe

如果你想从命令提示符运行Subversion命令,你应该运行svn.exe命令行客户端。TortoiseSVN 1.6。x和旧版本不包括SVN命令行工具,但现代版本有。

如果你想在不安装TortoiseSVN的情况下获得SVN命令行工具,请检查SVN二进制分布页面或简单地从VisualSVN下载页面下载最新版本。

如果您的系统上安装了SVN命令行工具,但仍然得到错误'svn' is not recognized as an internal or external command,您应该检查%PATH%环境变量。%PATH%必须包含到SVN工具目录的路径,例如C:\Program Files (x86)\VisualSVN\bin

TortoiseProc.exe

除了svn.exe, TortoiseSVN附带了TortoiseProc.exe,可以从命令提示符调用。在大多数情况下,你做需要使用这个工具,因为它应该只用于GUI自动化。TortoiseProc.exe不能替代SVN命令行客户端。

您可以同时安装TortoiseSVN和Apache Subversion命令行工具。我通常从VisualSVN下载站点https://www.visualsvn.com/downloads/安装Apache SVN工具

安装完成后,将Subversion\bin放在您设置的PATH中。然后,您将能够在需要使用GUI时使用TortoiseSVN,并且您有从命令行使用的适当的SVN命令行工具。