SVN получает количество ревизий репозитория

В настоящее время я работаю над проектом Qt C++, который в основном печатает все сообщения журнала фиксации между двумя конкретными версиями конкретного репозитория SVN (пользователь вводит репо и версии).

Мне нужно получить количество ревизий в URL-адресе репо.

Я хочу сделать это в Windows 10, поэтому я думаю, что пакетная команда может быть очень полезной.

Я использую Visual SVN Server и Tortoise SVN.

(Моя версия Qt 5.11.1, если это необходимо)

У меня есть пакетный скрипт, который печатает все журналы между двумя конкретными версиями в файл .txt.

Это так:

@ECHO OFF

REM This Script Takes all the logs between a given repository's 2 specific revision.

REM Below, we store the first parameter which is the URL of the Repository that is wanted.
SET urlOfRepository=%1

REM Below, we store the second parameter which is the first revision that is wanted.
SET firstRevision=%2

REM Below, we store the third parameter which is the second revision that is wanted.
SET secondRevision=%3

REM Below is the command for getting all the log messages between the first and the second revision that is wanted in the wanted repository and printing to a .txt file.
svn log -r %firstRevision%:%secondRevision% --limit %secondRevision% %urlOfRepository% > svnLog.txt

EXIT /B 0

Буду рад, если кто-то сможет мне помочь.

Я могу уточнить вопрос больше, если это необходимо, поэтому, пожалуйста, не стесняйтесь обращаться ко мне через комментарии.

Заранее спасибо.

Благодаря Kostix ответ:

svn info -r HEAD --show-item revision %URL%

И я написал сценарий для решения моей проблемы. Вот:

@ECHO OFF

REM This Script writes the revision count of a specific SVN repository

REM Below, we store the first parameter which is the URL of the Repository that is wanted.
SET urlOfRepository=%1

REM Below, is the command that returns the count of revisions in the specifically given SVN repository and writes to a .txt file
svn info -r HEAD --show-item revision %urlOfRepository% > svnCountOfRepoRevisions.txt

EXIT /B 0

person BUY    schedule 28.06.2018    source источник
comment
Добавьте определение в make-файл DEFINES += "SVN_REV=\"\\\"$(shell svnversion -n)\\\"\"", это даст вам текущую версию svn.   -  person Simon    schedule 28.06.2018


Ответы (1)


Нет необходимости делать это так сложно — просто

svn log -r HEAD:1 %URL%

должно сработать.

Специальная ревизия HEAD автоматически становится последней в репозитории, а ревизия 1 — первой (очевидно).

Subversion достаточно умен, чтобы пропускать ревизии, в которых URL-адрес не существует, поэтому, скажем, если она была добавлена ​​в ревизию 42, svn log не будет жаловаться на отсутствие URL-адреса в диапазоне ревизий [41…1].


Вы можете получить больше информации, запустив

svn help log

в окне вашей консоли.

person kostix    schedule 28.06.2018
comment
О, и вы также можете использовать версию BASE — на тот случай, если URL больше не существует в HEAD (который может быть после BASE). - person kostix; 28.06.2018
comment
@ kostix My Script печатает вывод написанной вами команды (svn log -r HEAD:1 %URL%). Спасибо за ваш ответ. Мне просто нужно значение HEAD, чтобы я мог перечислить ревизии в QListWidget. - person BUY; 28.06.2018
comment
Вы можете сделать svn info -r HEAD --show-item revision %URL% тнен. - person kostix; 28.06.2018