使用批处理脚本无法获取最新的SVN标记版本号

时间:2019-09-20 17:43:50

标签: batch-file svn

我正在尝试从标签列表中找到最新版本。

在SVN存储库浏览器中,我具有以下文件夹结构: SVNrepo

运行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。任何帮助表示赞赏!

1 个答案:

答案 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