On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 3376
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.13 15:12. Заголовок: Hbmk2 есть ли фича ?


Идея такова (автоматическая нумерация сборок).
Имеем файлик Build.ch
 
#define BUILD 456

Можно как то сказать hbmk2 что бы в этом файле при сборке значение BUILD он увеличивал на 1 ?
Лениво а порой просто забываю сменить номер сборки руками.

Что то типа опции -tshead , правда это не совсем то.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 24 , стр: 1 2 All [только новые]







Пост N: 115
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 14.08.13 17:55. Заголовок: У меня такая штука р..


У меня такая штука реализована в текстовом редакторе.
Специальный формат строки, внутри размещается дата и инкрементный счетчик.
При каждом сохранении счетчик увеличивается на единицу, дата - обновляется.
По факту показывает кол-во редактирований файла. Если программа состоит из нескольких модулей - я использую сумму по всем модулям как номер версии.

Было-бы интересно реализовать без применения уже немного устаревшего текстового редактора - хоть к нему и привык, но Far + Colorer интереснее.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3378
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.13 18:16. Заголовок: Вроде придумал как. ..


Вроде придумал как. Правда без использования Hbmk2.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 116
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 14.08.13 18:31. Заголовок: Dima пишет: Вроде п..


Dima пишет:

 цитата:
Вроде придумал как.



и не расскажешь ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3379
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.13 19:10. Заголовок: Sergy пишет: и не р..


Sergy пишет:

 цитата:
и не расскажешь ?


Идея пока сырая и если кратко.
Сборку проекта я делаю через батник , поэтому до вызова Hbmk2 можно запускать спец прогу (ее сваять еще надо)
которая будет считывать md5 или crc32 всех файлов проекта и сравнивать с предыдущим результатом.
Результат можно в базе держать или в массиве на диске. Если есть отличия до можно менять содержимое
какого ни будь CH файлика где номер сборки будет увеличиваться на 1 ну или еще как то.
Вот и все в общих чертах.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 117
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 14.08.13 21:12. Заголовок: Хм, идея занятная, н..


Хм, идея занятная, нужно будет подумать...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3380
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.13 21:34. Заголовок: Sergy пишет: Хм, ид..


Sergy пишет:

 цитата:
Хм, идея занятная, нужно будет подумать...


Давай вместе если не против.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 118
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 14.08.13 21:46. Заголовок: Dima пишет: Давай в..


Dima пишет:

 цитата:
Давай вместе если не против.


ok

1) хотелось-бы хранить информацию о файлах проекта максимально компактно. Т.е. в итоге должен получиться exe - 1шт и файл с инфой о проекте - 1шт.
Все, что касается проекта - хранить в одном месте. Например, в стиле INI.
Часть данных, например список файлов, подлежащих контролю - задает юзер в главной секции.
Вторая секция - [do_not_human_modify] будет содержать информацию о датах/размерах файлов и модифицироваться программно.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3381
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.13 21:57. Заголовок: В стиле INI не покат..


В стиле INI не покатит так как из него нужно считывать инфу а я речь веду о том что бы вшить в прогу номер
сборки на автомате во время самой сборки проекта.
Поэтому вариант с CH файликом самое то на мой выпуклый морской глаз.
Прописав его в Main процедуре более ни чего и не надо , до вызова Hbmk2 в батнике "проги"
которая пока в теории.
Или я тебя не понял ?!

PS
Имею в виду что после сборки EXE не должен читать ни каких INI так как номерок уже зашит в EXE

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 119
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 14.08.13 22:07. Заголовок: Dima пишет: Или я т..


Dima пишет:

 цитата:
Или я тебя не понял ?!



Я имел в виду место, в котором программа (пора-бы дать ей уже имя, как например bcheck - Build Check?) будет хранить информацию о дате изменения/размере исходных файлов, входящих в проект.

Результатом ее деятельности будет - хоть *.ch, хоть *.prg, хоть вообще *.exe - именно туда будет в результате зашиваться номер сборки.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3382
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.13 22:17. Заголовок: Sergy Понял. PS Ин..


Sergy
Понял.

PS
Иногда программист программиста не всегда сразу понимает ;)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2926
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.08.13 23:31. Заголовок: Делайте через файл р..


Делайте через файл ресурса ! Т.е. туда записывать !!!
http://clipper.borda.ru/?1-1-0-00000076-000-0-0-1366372867

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 16
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 15.08.13 07:15. Заголовок: Все можно сделать просто через батник


Контролировать для увеличения номера билда все файлы проекта, думаю,
что не очень подходит. Если проверять дату и время модификации - то ведь можно
что-то исправить, сохранить, а потом передумать и вернуть обратно. При этом
нажимая на "Сохранить" в редакторе. Время модификации изменится,
но программа по факту - нет.

Или вот решили немного причесать исходники и поменять наименование
переменных: n1 на nCount1, buf2 на aBuffer2. Т.е. красоту навести, отступы сделать.
Исходники проекта изменятся, а программа по факту - нет.

Нужно ли в таких случаях увеличивать номер билда ?

Если не заморачиваться с ресурсами и для сборки проекта используется
батник - то можно его модифицировать и использовать так:

1) Создаем файл "build.set" такого содержания (как пример)

Скрытый текст


2) Модифицируем батник для сборки проекта (проверено на XP, 2003)

Скрытый текст


3) В результате получим "build.ch"

Скрытый текст


Это только один из вариантов, как можно сделать.
Можно в файле "build.set" хранить данные не так, а,
например, в виде одной строки: 1.0.100
Изменится только разбор в цикле "for"

Или вообще не делать отдельный "build.set",
а информацию хранить сразу в "build.ch"

Я похожим батником пользуюсь при сборке собственной библиотеки
Только пишу не в .CH , а в .PRG в виде функции, которая хранит массив
с информацией об имени библиотеки, версии, сборке, дате, времени.

Получаю вот такой .PRG модуль и собираю его в библиотеку:

Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3383
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.08.13 14:08. Заголовок: Andrey_IV Оригиналь..


Andrey_IV
Оригинальное решение , спасибо !

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 120
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 15.08.13 15:46. Заголовок: Andrey_IV, мощно, ре..


Andrey_IV, мощно, респект!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 17
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 16.08.13 00:20. Заголовок: Небольшая неточность кода - исправьте


При формировании "build.ch" значения BUID_DATE и BUILD_TIME нужно взять в кавычки

echo #define BUILD_DATE "%BUILD_DATE%" >> %BUILD_CH%
echo #define BUILD_TIME "%BUILD_TIME%" >> %BUILD_CH%

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 122
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 16.08.13 01:33. Заголовок: Правильно ли я поним..


Правильно ли я понимаю, что можно отказаться от "выковыривания" переменных из файла build.set, заменив его на build_set.bat такого содержания:

set VERSION_MAJOR=1
set VERSION_MINOR=2
set VERSION_BUILD=654

И вызовом CALL BUILD_SET.BAT вместо конструкции "for /F eol... Delims... +последующей обрезки.

И соотв. перезаписью после сборки?



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 16.08.13 08:12. Заголовок: Да, совершенно верно - будет


Да, совершенно верно - будет
Но обрезать строки от пробелов все равно придется

set VERSION_MAJOR=%VERSION_MAJOR: =%
set VERSION_MINOR=%VERSION_MINOR: =%
set VERSION_BUILD=%VERSION_BUILD: =%

Пробелы накапливаются. Почему так происходит, я так и не понял
В документации по CMD и интернете никакого внятного ответа не нашел.
Просто принял за факт. Данные в кавычках такого эффекта не дают
Но нам-то нужны именно цыфры


На всякий случай проверил - вот такой батник получается:

build_set.bat

Скрытый текст



build2.bat

Скрытый текст



Вообще в случае с батниками, все зависит только от собсвенной фантазии
Т.е. храни данные в каком угодно файле - лишь бы текстовый был


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 162
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.08.13 16:59. Заголовок: Вот что умеет hbmk2 ..


Вот что умеет hbmk2 в версии 3.2:

  -vcshead=<file>     generate .ch header file with local repository 
information. Git, SVN, Mercurial, Bazaar, Fossil, CVS and
Monotone are currently supported. Generated header will
define preprocessor constant _HBMK_VCS_TYPE_ with the
name of detected VCS and _HBMK_VCS_ID_ with the unique ID
of local repository. If no VCS system is detected, a
sequential number will be rolled automatically on each
build
.

и

-tshead=<file> generate .ch header file with timestamp information.
Generated header will define preprocessor constants
_HBMK_BUILD_DATE_, _HBMK_BUILD_TIME_,
_HBMK_BUILD_TIMESTAMP_ with the date/time of build


задав команды
-vcshead=one
-tshead=two

Получил два *.ch файла:

/* Automatically generated by hbmk2. Do not edit. */
#define _HBMK_VCS_TYPE_ "hbmk"
#define _HBMK_VCS_ID_ "2"


/* Automatically generated by hbmk2. Do not edit. */
#define _HBMK_BUILD_DATE_ "20130820"
#define _HBMK_BUILD_TIME_ "181138"
#define _HBMK_BUILD_TIMESTAMP_ "20130820181138166"

Ну не офигеть, а ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3408
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.08.13 17:16. Заголовок: Sergy пишет: -vcshe..


Sergy пишет:

 цитата:
-vcshead=<file>


Создает файлик CH в котором есть строка #define _HBMK_VCS_ID_
В этом файле эту строку я исправил на (просто затестил)
#define _HBMK_VCS_ID_ "36.3"
И при следующей сборке в нем получил 37.3

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3303
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.14 14:22. Заголовок: Dima пишет: В этом ..


Dima пишет:

 цитата:
В этом файле эту строку я исправил на (просто затестил)
#define _HBMK_VCS_ID_ "36.3"
И при следующей сборке в нем получил 37.3


А как получить автоинкремент на 0.01 ?

И еще вопрос, можно ли эти параметры записывать в ресурсный файл проги ?
В строку:
VALUE "FileVersion", "1.0"


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 24 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 44
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет