如何从命令行签出特定的 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 您是否在本地修改了您要更新的文件? 如何进行硬重置? (忽略冲突?) @DilipRajBaralsvn 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 checkout
和svn 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:<revisionNumber>
可以在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 版本?的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac OS 山狮上设置 Subversion 服务器(可以通过浏览器访问,但无法从 subversion 签出)[关闭]