Не удается получить последний номер версии с тегом SVN с помощью пакетного сценария - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь найти самую последнюю версию из списка тегов.

В браузере репозитория 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, кажется, не принимает это.

У меня есть следующий код, который возвращает 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 голосов
/ 21 сентября 2019

С подсказками от этого ответа для дерева каталогов, подобного этому (ваш случай воспроизведен)

>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

(вы можете получить его из своих тегов локально с помощью checkout --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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...