我正在尝试从标签列表中找到最新版本。
在SVN存储库浏览器中,我具有以下文件夹结构:
运行svn list URL/tags
时,我得到:
1.10.0/
1.10.1/
1.11.0/
1.11.1/
1.3.0/
1.3.1/
1.3.2/
1.4.0/
1.4.1/
1.4.2/
1.4.3/
1.4.4/
1.5.0/
1.5.1/
1.5.2/
1.5.3/
1.6.0/
1.6.1/
1.7.0/
1.7.1/
1.8.0/
1.8.1/
1.9.0/
1.9.1/
1.9.2/
1.9.3/
1.9.4/
从其他答案中,我尝试添加--limit标志,但svn list似乎不接受。
我有以下代码返回1.9.4作为最新版本。 %svnRoot%是回购浏览器URL /标签
set username=%1
set password=%2
set appName=%3
set svnRoot=%4
CALL :findMaxVersion "svn list --non-interactive --no-auth-cache --username %username% --password %password% %svnRoot%"
GOTO :EOF
:findMaxVersion
set maxMajor=0
set maxMinor=0
set maxPatch=0
for /f %%x in ('%1') do (
for /f "tokens=1,2,3 delims=./" %%a IN ("%%x") DO (
if %%a GTR !maxMajor! (
set maxMajor=%%a
set maxMinor=%%b
set maxPatch=%%c
) else if %%a EQU !maxMajor! (
if %%b GTR !maxMinor! (
set maxMinor=%%b
set maxPatch=%%c
) else if %%b EQU !maxMinor! (
if %%c GTR !maxPatch! (
set maxPatch=%%c
)
)
)
)
)
set recentVersion=%maxMajor%.%maxMinor%.%maxPatch%
echo The final maximum version is: %recentVersion%
我不确定如何更改svn列表或批处理脚本的顺序以获取1.11.1而不是1.9.4。任何帮助表示赞赏!
答案 0 :(得分:0)
来自this answer的类似目录树的提示(复制了您的情况)
>dir /B
1.0
1.1
1.10.0
1.10.1
1.11.0
1.11.1
1.3.0
1.3.1
1.3.2
1.4.0
1.4.1
1.4.2
1.4.3
1.4.4
1.5.0
1.5.1
1.5.2
1.5.3
1.6.0
1.6.1
1.7.0
1.7.1
1.8.0
1.8.1
1.9.0
1.9.1
1.9.2
1.9.3
1.9.4
(您可以通过结帐--depth immediates
从本地标签中获取)
通过使用这样的PowerShell oneliner,我得到了排序正确版本(完整列表,对不起,仅获取最后一个字符串将是您的任务)
Get-ChildItem "Path\To\Parent\Dir" -Name | sort-object { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }
1.0
1.1
1.3.0
1.3.1
1.3.2
1.4.0
1.4.1
1.4.2
1.4.3
1.4.4
1.5.0
1.5.1
1.5.2
1.5.3
1.6.0
1.6.1
1.7.0
1.7.1
1.8.0
1.8.1
1.9.0
1.9.1
1.9.2
1.9.3
1.9.4
1.10.0
1.10.1
1.11.0
1.11.1