LINUX.ORG.RU

Контроль версий и Qt

 , ,


0

6

Добрый день, кто как автоматизирует версии своего приложения? Возможно ли вообще с помощью git'а сделать так чтобы с новым комитом делался инркемент версии приложения (в самом .pro файле)?

s/git/svn/g

В DVCS это не нужно.

Stil ★★★★★
()

Конфликты ведь будут постоянные, не?

CrossFire ★★★★★
()

Я в качестве версии использую теги в git. CMake при каждой сборке находит ближайший тег, парсит его на major/minor/patch и генерирует по шаблону заголовочный файл, куда подставляет эти значения. Такая схема кроме всего прочего имеет дополнительные преимущества - всегда можно сказать, какому коммиту соответствует бинарник. Ну или точно быть уверенным, что бинарник собран в dirty рабочей копии.

m0rph ★★★★★
()

Можно повесить на хуки, но разве изменение ".pro файла" не будет означать еще один коммит с последующим изменением этого файла и т.д.?

alozovskoy ★★★★★
()
Ответ на: комментарий от m0rph

А можешь подробнее написать как у тебя сделано, с примером было бы совсем красота.

hell_wood
() автор топика

При сборке генерируй файл, в котором присваивай переменной с версией значение текущего хэша или выдачи git describe

annulen ★★★★★
()

В 5.6-5.7 использую

#ifndef VERSION_H
#define VERSION_H
#define VERSION_STR     "1.5.10-dev1-f897e96"

#include <QtCore/QVersionNumber>

static QVersionNumber version = QVersionNumber::fromString(VERSION_STR);

#endif // VERSION_H

Хеш можно переписывать git хуком при коммите, по желанию можно проверять если «dev» нет в названии, то делать тег с версией, если тег уже есть, то дописывать «dev» в название версии и инкрементить минорную часть.

uralbash
()

Версия инкрементируется руками с каждым релизом, больше ничего, тем более на каждый коммит, не нужно.

slovazap ★★★★★
()

У меня версия берется из последнего тэга после запуска qmake. Но версии всегда проставляю сам. Если после тэга есть еще коммиты, то в версию входит последний тэг, число коммитов, хэш последнего коммита, например:

1.0.0-42-deadbee

WRG ★★★★
()

(в самом .pro файле)?

GIT_VERSION = $$system(git --git-dir $$PWD/.git --work-tree $$PWD describe --always --tags)

DEFINES += GIT_VERSION=\\\«$$GIT_VERSION\\\»

PS не благодари. пользуйся на здоровье

MikeDM ★★★★★
()

Добавь в систему сборки шелл скрипт, который будет инкрементировать тебе в константу с build number.

const unsigned maj = 1;
const unsigned min = 0;
const build = 0; // set during build
const char hash[] = ""; // set from version control during build
...
printf("%d.%d.%d (%s)\n", maj, min, build, hash);

При том major и minor все ровно ручками пишешь.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)
Ответ на: комментарий от invy

А еще лучше не править хеадер, чтобы не отмечался измененным, а генерировать хеадер типа current_version.h, и пихать его куда-то в build директорию.

invy ★★★★★
()
Ответ на: комментарий от invy

А еще лучше не править хеадер, чтобы не отмечался измененным, а генерировать хеадер типа current_version.h, и пихать его куда-то в build директорию.

такой фокус лучше на cmake использовать

MikeDM ★★★★★
()

Версию приложения выставляет сервер сборки исходя из номера билда.

Старшие цифры апаются при значительных изменениях ручками.

trex6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.