如何通过命令行使用 TortoiseSVN?

Posted

技术标签:

【中文标题】如何通过命令行使用 TortoiseSVN?【英文标题】:How to use TortoiseSVN via command line? 【发布时间】:2010-12-10 04:06:18 【问题描述】:

我使用 TortoiseSVN 并想使用命令行 SVN 选项。

我使用了命令:

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

并得到以下错误:

'svn' 不是内部或外部命令

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

【问题讨论】:

我建议slik subversion。安装后只需将其 bin 目录添加到您的路径。 -bhups TortoiseSVN 可能是最常用的 Windows GUI SVN 客户端,并且它有完整的文档记录。我不会仅仅因为它不是参考命令行实现而称它为伪客户端。 最新版本的 TortoiseSVN(本文写作 1.7.1)在安装命令行工具时有一个选项。默认情况下它没有打开,但它会为 svn 安装标准的命令行文件。所以不再需要像 Silk 这样单独安装 subversion 包了。 只是一个快速的仅供参考,如果使用 Slik svn 并且您收到该错误:“'svn' 无法识别...”您可能需要打开系统属性对话框。虽然 Slik 确实将正确的条目添加到您的 Path 变量中,但您可能必须单击编辑和“确定”(即使您没有进行任何更改)才能启用该变量。至少那是我使用 Windows Vista 的经验。在我这样做之后,Windows 识别出 Path 的变化并且识别出我的 svn 命令。 我已将 SlikSvn/bin 路径添加到环境变量中,但仍然出现此错误... 【参考方案1】:

很多 TortoiseSVN 用户在实际寻找 svn.exe 命令行客户端时使用了错误的命令行工具。

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

svn.exe

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

如果您想获得 SVN 命令行工具而无需安装 TortoiseSVN,请查看SVN binary distributions page 或直接从VisualSVN downloads page 下载最新版本。

如果您的系统上安装了 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 命令行客户端。

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

如果您已经安装了 TortoiseSVN GUI 并且想知道如何升级到命令行工具,这里是步骤...

    转到 Windows 控制面板 → 程序和功能(Windows 7+) 找到 TortoiseSVN 并点击它。 从可用选项中选择“更改”。

    请参阅此图片了解更多步骤。

    命令行客户端工具完成后,打开命令提示符,输入svn help查看是否安装成功。

【讨论】:

您的答案尚未格式化。它有不需要的信息。他正确地格式化和编辑了您的答案。请阅读帮助中心了解更多信息。 ;) Win10 是“应用程序和功能”.. 但这可能很明显 好吧,别相信我。请在 meta 中将此作为一个问题提出,该编辑是否合法。他不仅格式化了您的答案,还删除了答案不需要的不需要的信息。这叫做适度。具有高级代表的人通常会通过审核和贡献来清理网站,这就是为什么我建议您查找帮助中心的原因。但是你只是想争论而不是获得知识。祝你好运。? 是的,实际上我有兴趣分享知识,而不是声称某人的工作和讲道。我也不是高次数的盲目追随者。 当我们启用命令行时,它会询问下载所需的应用程序路径。路径:osdn.net/projects/tortoisesvn/storage/1.12.0/Application/…【参考方案4】:

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

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

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

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

【讨论】:

此方法无效,仍显示'svn' is not recognized as an internal or external command【参考方案5】:

一段时间后,我使用了这个解决方法...

(在 .bat 文件中)

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

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

【讨论】:

【参考方案6】:

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

您可以在文档中找到有关 TortoiseSVN 命令行选项的信息: Appendix D. Automating TortoiseSVN。这里要使用的主要程序是TortoiseProc.exe

但顶部的注释几乎已经说:

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

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

【讨论】:

只是补充一下 - 确保乌龟在你的路上。否则,什么都行不通。 基于这个答案,我认为最好的办法是安装实际的 SVN 命令行客户端,而不是学习第二个命令行界面。不过,我不知道该怎么做。 Thomas:默认情况下,TortoiseSVN 和 Slik SVN 都会相应地改变路径。 这个解决方案已经过时了,TortosieSVN 安装程序现在包含命令行工具。 安装后可能需要重新启动,以便更改 PATH 环境变量。【参考方案7】:

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

【讨论】:

这是期望的结果,但是这个答案并没有说明如何实际实现这一目标。【参考方案8】:

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

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 文件一样。

【讨论】:

太棒了!这是从命令行实际调用 TortoiseSVN 的唯一答案,而不是普通的svn【参考方案9】:

要启用 svn 再次运行 TortoiseSVN 安装程序,选择“修改”(允许用户更改功能的安装方式)并安装“命令行客户端工具”。

【讨论】:

对于那些想知道“修改”选项在哪里的人 - 尝试重新安装 Tortoise SVN @maya 如果您已经安装了它,请不要尝试卸载并重新安装它。去Control Panel\Programs\Programs and Features搜索Tortoise SVN并点击Change然后点击Modify【参考方案10】:

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

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

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

【讨论】:

对于那些不熟悉 Python 的人:你需要一个最新的 Python 2.x 解释器。如果您有easy_installpip install,只需指定tsvn;否则,您可以下载并解压缩 tarball 并运行包含的 setup.py 安装脚本。由于它已被解释,因此您可以对其进行详细检查;-)【参考方案11】:

要使用命令支持,您应该按照以下步骤操作:

    在环境变量中定义路径:

    打开“系统属性”; 在“高级”标签上点击“环境变量”按钮 在“系统变量”部分中选择“路径”选项并点击“编辑

    将变量值附加到 TortoiseProc.exe 文件的路径中,例如:

    C:\Program Files\TortoiseSVN\bin

    由于你已经注册了TortoiseProc,你可以根据TortoiseSVNdocumentation使用它。

    示例:

    TortoiseProc.exe /command:commit /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt" /logmsg:"测试日志信息" /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

附:要使用“svn”之类的友好名称而不是“TortoiseProc”,请将“svn.bat”文件放在“TortoiseProc.exe”的目录中。有一个svn.bat的例子:

TortoiseProc.exe %1 %2 %3

【讨论】:

主要问题不是可执行文件的名称(以及如何找到它),而是完全不同的命令行语法;请参阅我的回答,它讲述了我的 tsvn 程序(在术士回答时不存在)。最近的 Windows 版本允许将所有参数指定为 %*(而不是 %1 %2 %3 ...)。【参考方案12】:

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

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

【讨论】:

就个人而言,我更喜欢这个答案而不是公认的答案:没有二次安装,并且可以完全访问标准 SVN 命令行。 还有一个额外的好处是命令行工具版本与 TortoiseSVN 版本保持同步。 ... 这意味着,更详细地说:Subversion 的工作目录格式已经改变了几次,例如在 1.7 和 1.8 版本中。 1.7 客户端不会使用旧的工作目录,除非它是 svn upgraded;之后,1.6 的客户端将无法再使用它。 作为提示,如果您已经安装了 Tortoise,则无需重新安装。您可以简单地打开原始安装程序 .msi 文件,而不是选择“卸载”,您可以选择“修改”。它只会更新您当前的 Tortoise 安装,而不会搞砸任何事情。 作为提示,如果您已经安装了 Tortoise,并且没有 .msi 文件 - 您可以转到控制面板 -> 程序和功能,然后然后选择 TortoiseSVN -> Modify.

以上是关于如何通过命令行使用 TortoiseSVN?的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行使用 svn+ssh 和 Tortoise SVN

用于删除所有TortoiseSVN.svn文件(放入注册表)的Shell命令

TortoiseSVN 客户端

如何使用 TortoiseSVN 更改密码?

windows 命令行操作 TortoiseSVN (转)

使用 TortoiseSVN 如何将更改从主干合并到分支,反之亦然?