Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Fregloin от Сентябрь 11, 2012, 11:07



Название: Как получить номер сборки приложения из svn?
Отправлено: Fregloin от Сентябрь 11, 2012, 11:07
Привет. Есть приложение. Исходники находятся в репозитории svn. Можно ли как то получить последний номер ревизии репозитория, что бы он потом отображался в окне About?
Или только ручками? Приложение довольно специфическое, но уже работает на нескольких объектах. На этих объектах стоят разные версии, так как ПО постоянно дорабатывается и совершенствуется + адаптация к конкретному заказчику. В голове все версии держать тяжело, многое забывается, а текстовые файлы с версиями могут потеряться.


Название: Re: Как получить номер сборки приложения из svn?
Отправлено: kuzulis от Сентябрь 11, 2012, 11:50
Можно.

Если стоит "чистый" SVN клиент, то см. тут (http://www.qtcentre.org/wiki/index.php?title=Version_numbering_using_QMake)

Если тортилка, то можно так:

1. Создаем файл - шаблон version.h.tpl :
Код
C++ (Qt)
#ifndef VERSION_H
#define VERSION_H
 
   #define VERSION_MAJOR     0
   #define VERSION_MINOR     66
 
   // replaced with a value from SVN automatically
   #define VERSION_BUILD     $WCREV$
 
   // if the working copy is modified (not synchronized with SVN) the value == 1
   // otherwise the value == 0. Filled automatically.
   #define VERSION_MODIFIED  $WCMODS?1:0$
 
   // if the working copy contains mixed SVN trees the value == 1 (should not be mixed in nornal case)
   #define VERSION_MIXED     $WCMIXED?1:0$
 
#endif /* VERSION_H */
 

2. в *.pro файле пишешь
Цитировать
# generate a version.h header file from template and SVN rev.
system("SubWCRev $$PWD $$PWD/version.h.tpl $$OUT_PWD/version.h")

3. и где нить в about.cpp:
Код
C++ (Qt)
#include "version.h"
 
AboutDialog::AboutDialog(QWidget *parent)
   : QDialog(parent)
   , m_ui(new Ui::AboutDialog)
{
   m_ui->setupUi(this);
   m_ui->versionLabel->setText(QString("Version: %1.%2.%3.%4.%5")
                               .arg(VERSION_MAJOR)
                               .arg(VERSION_MINOR)
                               .arg(VERSION_BUILD)
                               .arg(VERSION_MODIFIED)
                               .arg(VERSION_MIXED));
}
 

Может и еще какие нить варианты есть.






Название: Re: Как получить номер сборки приложения из svn?
Отправлено: Fregloin от Сентябрь 12, 2012, 13:58
Большое спасибо, то чно нужно! буду пробовать!


Название: Re: Как получить номер сборки приложения из svn?
Отправлено: Fregloin от Сентябрь 12, 2012, 14:19
VERSION = $$system(svnversion -n | cut -b 1-3)
#    !isEmpty(VERSION){
#      VERSION = 0.$${VERSION}
#    }

VERSTR = '\\"$${VERSION}\\"'
DEFINES += VER=\"$${VERSTR}\"

я сделал так, потому что svn возвращает текст на русском