我正在尝试编写一个批处理文件,其中我需要对我正在处理的项目进行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%
感谢所有帮助人员
此答案也添加到下面的列表中。
答案 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 post与Shambulator'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>
它返回一个修订号。