如何从命令行签出特定的 Subversion 版本?

Posted

技术标签:

【中文标题】如何从命令行签出特定的 Subversion 版本?【英文标题】:How to checkout a specific Subversion revision from the command line? 【发布时间】:2010-11-28 13:54:41 【问题描述】:

我想使用命令行检查Subversion 中文件夹的特定修订。

我没有看到在TortoiseProc.exe 中指定修订号的选项,

TortoiseProc.exe /command:checkout <url>

如何获得我想要的修订? TortoiseProc.exe 是我想做的正确工具吗?

【问题讨论】:

【参考方案1】:

如果你已经在本地签出了它,那么你可以cd 到它被签出的地方,然后使用这个语法:

$ svn up -rXXXX

参考:Checkout a specific revision from subversion from command line

【讨论】:

出于某种原因,这对我没有任何作用。仍然是旧版本。 @IgorGanapolsky 您是否在本地修改了您要更新的文件? 如何进行硬重置? (忽略冲突?) @DilipRajBaral svn revert 在特定文件上,或 svn revert --depth infinity 递归重置 如何确认该命令是否成功? svn info --show-item revision 显示的数字与我输入的数字不同。【参考方案2】:

要么

svn checkout url://repository/path@1234

svn checkout -r 1234 url://repository/path

【讨论】:

我必须在 -r 之后删除空格,所以“-r1234”对我有用。【参考方案3】:

有什么理由使用 TortoiseProc 而不是普通的 svn 命令行?

我会使用:

svn checkout svn://somepath@1234 working-directory

(获取修订版 1234)

【讨论】:

【参考方案4】:

你不应该使用 TortoiseProc.exe 作为命令行 Subversion 客户端! TortoiseProc 应该只用于自动化 TortoiseSVN 的 GUI。见 note in TortoiseSVN's Manual:

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

使用 Subversion command-line svn.exe client。使用命令行客户端,您可以

签出 REV 修订版中的工作副本:

    svn checkout --revision REV https://svn.example.com/svn/MyRepo/trunk/

    svn checkout https://svn.example.com/svn/MyRepo/trunk/@REV

将您的本地工作副本更新为 REV 修订版:

svn update --revision REV

在 REV 版本中导出(即下载)文件或开发分支:

    svn export --revision REV https://svn.example.com/svn/MyRepo/trunk/

    svn export https://svn.example.com/MyRepo/trunk/@REV

您可能会注意到,使用svn checkoutsvn export,您可以输入REV 编号作为--revision REV 参数,并在URL 后面输入@REV。第一个称为手术修订,第二个称为钉修订。 Read SVNBook for more information about peg and operative revisions concept.

【讨论】:

【参考方案5】:

svn checkout 到您的存储库在另一台服务器上的修订版

使用svn log 命令找出可用的修订:

svn log

哪些打印:

------------------------------------------------------------------------
r762 | machines | 2012-12-02 13:00:16 -0500 (Sun, 02 Dec 2012) | 2 lines

------------------------------------------------------------------------
r761 | machines | 2012-12-02 12:59:40 -0500 (Sun, 02 Dec 2012) | 2 lines

注意号码r761。下面是命令说明:

svn export http://url-to-your-file@761 /tmp/filename

我专门用了这个命令:

svn export svn+ssh://machines@mywebsite.com/home1/oct/calc/calcFeatures.m@761 calcFeatures.m

这会导致 calcFeatures.m 修订版 761 被检出到当前目录。

【讨论】:

【参考方案6】:

我相信这个语法是/rev:&lt;revisionNumber&gt;

可以在here找到相关文档

【讨论】:

【参考方案7】:

你可以试试

TortoiseProc.exe /command:checkout /rev:1234

获取修订版 1234。

我不能 100% 确定 /rev 选项与 checkout 兼容,但我从一些 TortoiseProc documentation 中得到了这个想法。

【讨论】:

【参考方案8】:

你必须直接使用svn:

svn checkout URL[@REV]... [PATH]

svn help co

为您提供更多帮助。

【讨论】:

就我所见,我认为一个例子可以提供帮助。你包括或不包括括号? 3个时期呢? 3个时期之后的空间呢?哪些字符是字面的,哪些是占位符,哪些是为占位符添加的字符?【参考方案9】:

看来您可以使用存储库浏览器。单击右上角的修订按钮并将其更改为所需的修订。然后在浏览器中右键单击您的文件并使用“复制到工作副本...”,但更改要检出的文件名,以避免冲突。

【讨论】:

什么存储库浏览器?【参考方案10】:

转到文件夹并使用命令:

svn co url

【讨论】:

什么是co?我觉得这个答案需要一些扩展/解释

以上是关于如何从命令行签出特定的 Subversion 版本?的主要内容,如果未能解决你的问题,请参考以下文章

使用 tf.exe 通过命令行签入解决方案 [重复]

在 Mac OS 山狮上设置 Subversion 服务器(可以通过浏览器访问,但无法从 subversion 签出)[关闭]

如何使用 ANT 任务从 SVN 结帐?

如何回滚 TFS 签入?

如何更新CSV文件中的特定位置?

Subversion非递归签出