通过 TortoiseSVN 在命令行上获取当前修订号

问题描述 投票:0回答:11

我正在尝试编写一个批处理文件,其中我需要我正在处理的项目的 HEAD 修订版。

是否有命令可以从命令行获取此信息?

我使用的是 Windows XP 计算机。

batch-file svn tortoisesvn
11个回答
28
投票

没有 *nix 的文本处理功能会很尴尬,但是这个批处理文件可以做到:

@echo off
for /f "tokens=2" %%i in ('svn info -rHEAD svn://localhost^|find "Revision"') do @echo %%i

用你的 svn 存储库替换我的

svn://localhost

svn info
获取存储库信息,然后将其传送到
find
,这会删除除包含修订号的行之外的所有内容。
for
命令为您提供该行上的第二个“标记”(第一个是
Revision:
)。

编辑:正如其他人已经提到的,您需要安装 Subversion 的命令行版本,并且在您的

svn.exe
上有
PATH


4
投票

如果您需要在文件中进行该修订,请使用与 TortoiseSVN 一起安装的 SubWCRev(或单独提供)。


3
投票
我最终混合使用了 Shambulator、mizipzor 和 Stefan 的答案。我最终得到了这个:

for /f "tokens=5" %%i in ('SubWCRev WorkingCopyPath^|find "Last committed at revision"') do set version=%%i echo %version%
    

1
投票
当前答案列出了如何在中央 svn 存储库上打印当前修订版本。如果您对

当前本地签出的修订版感兴趣,我发现这篇博文所做的事情与Shambulator的答案中所做的非常相似: @echo off FOR /F "tokens=2 skip=4" %%G IN ('svn info --revision HEAD') DO ^ IF NOT DEFINED REVISION SET REVISION=%%G echo %REVISION%



1
投票

set SubWCRev=C:\Program Files\TortoiseSVN\bin\SubWCRev.exe set WorkingCopyPath=%~dp0 for /f "tokens=5" %%i in ('""%SubWCRev%" "%WorkingCopyPath%.""') do set version=%%i @echo Version=%version%

我使用了bat文件所在的目录作为SVN存储库文件夹,使用%~dp1是你想要将目录作为参数传入


0
投票

但是,如果您安装了 svn 命令行工具,以下命令将为您提供 SVN URL 的详细信息:

svn info [SVN-URL]

要提取修订版,您可以使用以下命令:

svn info [SVN-URL] | grep Revision | awk '{print $2}'

(假设您已经安装了一些 UNIX 工具,例如 cygwin)


0
投票
Collabnet

安装命令行版本,然后使用如下命令: c:\>svn ls -v svn://server/Source 67336 user1 Jul 05 13:00 ./ 67336 user1 Jul 05 13:00 Source/



0
投票

head -4 entries | tail -1

会给您修订号。

使用它可能并不明智,因为文件的格式可能会改变 - 这实际上取决于脚本是否仅供个人使用


0
投票
将第一行中的%cd%更改为您想要的路径


0
投票
shambulator 答案的变体

,以防你的 PATH 中没有 svn.exe。请注意使用反引号来处理路径中的空格。 @echo off set SVN_EXE=C:\Program Files (x86)\VisualSVN\bin\svn.exe rem Find revision of entire repository for /f "usebackq tokens=2" %%i in (`call "%SVN_EXE%" info -rHEAD https://svnroot/repo^|find "Revision"`) do @echo %%i rem Find revision of a path in the repository for /f "usebackq tokens=4" %%i in (`call "%SVN_EXE%" info -rHEAD https://svnroot/repo/project/trunk^|find "Last Changed Rev"`) do @echo %%i



0
投票

svnlook youngest <repo-path>

它返回单个修订号。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.