Russian Qt Forum
Ноябрь 23, 2024, 20:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить номер сборки приложения из svn?  (Прочитано 3642 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Сентябрь 11, 2012, 11:07 »

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

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Сентябрь 11, 2012, 11:50 »

Можно.

Если стоит "чистый" SVN клиент, то см. тут

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

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));
}
 

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




Записан

ArchLinux x86_64 / Win10 64 bit
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Сентябрь 12, 2012, 13:58 »

Большое спасибо, то чно нужно! буду пробовать!
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Сентябрь 12, 2012, 14:19 »

VERSION = $$system(svnversion -n | cut -b 1-3)
#    !isEmpty(VERSION){
#      VERSION = 0.$${VERSION}
#    }

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

я сделал так, потому что svn возвращает текст на русском
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.355 секунд. Запросов: 22.