通过TortoiseSVN在命令行获取当前版本号

时间:2010-07-05 13:03:16

标签: batch-file tortoisesvn

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

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

我在Windows XP计算机上。

修改 我最终使用了Shambulator,mizipzor和Stefan的答案。我最终得到了这个:

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

感谢所有帮助人员

此答案也添加到下面的列表中。

11 个答案:

答案 0 :(得分:26)

没有* 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

答案 1 :(得分:3)

如果您需要文件中的修订版,请使用随TortoiseSVN安装的SubWCRev(或separately}。

答案 2 :(得分:3)

我最终使用了Shambulator,mizipzor和Stefan的答案。我最终得到了这个:

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

感谢所有帮助人员

答案 3 :(得分:1)

TortoiseSVN没有提供任何命令行界面,因为它只是一个shell扩展。

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

svn info [SVN-URL]

提取您可以使用的修订:

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

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

答案 4 :(得分:1)

当前答案列出了如何在中央svn存储库上打印当前版本。如果您对当前本地签出的修订版感兴趣,我发现this blog postShambulator's answer中的内容完全相似:

@echo off
FOR /F "tokens=2 skip=4" %%G IN ('svn info --revision HEAD') DO ^
IF NOT DEFINED REVISION SET REVISION=%%G
echo %REVISION%

答案 5 :(得分: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 reporitory文件夹,使用%~dp1是否要将目录作为参数传递

答案 6 :(得分:0)

我认为没有办法直接从命令行使用tortoisesvn这样做。您可以从Collabnet安装命令行版本,然后使用如下命令:

c:\>svn ls -v svn://server/Source
67336 user1                Jul 05 13:00 ./
67336 user1                Jul 05 13:00 Source/

答案 7 :(得分:0)

另一种可能的方法。如果您已检出存储库,则.svn \ entries文件在第4行中具有修订号。即。

head -4 entries | tail -1

会给你修订号。

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

答案 8 :(得分:0)

svn info -rHEAD %cd%|find "Revision:"> %temp%\__svnrev.tmp
set /p revision=< %temp%\__svnrev.tmp
del %temp%\__svnrev.tmp
set revision=%revision:~10%
echo %revision%

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

答案 9 :(得分:0)

如果您在PATH中没有svn.exe,这是shambulator's answer的变体。注意使用反引号来处理路径中的空格。

@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

答案 10 :(得分:0)

这似乎比之前的所有答案都容易:

svnlook youngest <repo-path>

它返回一个修订号。

相关问题