Я не знаю, является ли это чем-то обычным делом для людей или нет, но я лично всегда отслеживаю, сколько раз я создавал свой код. То есть и количество звонков, которое я набрал make
, и количество успешных сборок.
Мое текущее решение
У меня есть простой код, который принимает файл в качестве параметра, открывает его, увеличивает число внутри и перезаписывает его. Этот код компилируется, во-первых, когда вызывается make
.
Сразу после этого вызывается ./increase_build build.txt
, что увеличивает количество раз, которое я набрал make
для построения библиотеки.
Затем код компилируется и создается файл lib (с ar cq ...
). После этого вызывается ./increase_build libbuild.txt
, который увеличивает количество успешных сборок. Наконец тесты построены.
Этот является примером одного из моих Makefile.
Почему я так обеспокоен
Это всегда работало нормально, пока я не начал использовать контроль версий. Казалось, что нет никаких проблем: я единственный автор своих собственных библиотек, и я добавляю функции одну за другой.
Однажды я тестировал ветвление и слияние (я использую git для себя и svn на работе), поэтому я добавил одну функцию в ветку и что-то изменил в master, и я слил две. Теперь файлы подсчета сборок имеют разные значения.
проблема
Проблема, скажем, во время ветвления, счетчик сборок равен 100. Затем я пишу что-то в ветке, и счетчик сборок достигает 110. Я пишу что-то в основной ветке, и счетчик сборок достигает 120. Когда Я объединяю два, я вижу, что один - 110, а другой - 120 (кстати, это конфликт). Правильным решением было бы установить сборку 130.
Однако я не могу (читай, я не хочу) вернуться к коммиту, где ветвь взлетела, и найти, что это было 100, поэтому я вычисляю 100+ (110-100) + (120-100) = 130! Я хочу, чтобы это было автоматически
Вопрос
Ну, вопрос очевиден: как мне это сделать? Как мне отслеживать количество сборок (не коммитов!), Когда я работаю с контролем версий? Мне не нужен ответ, основанный на функции контроля версий, потому что проблема возникает заново, если я меняю систему контроля версий.
Я мог бы добавить одну строку в файле подсчета сборок для каждой сборки, что-то сказать с данными и временем. Тогда номер сборки будет количеством строк в файлах счетчиков сборок. Кроме того, если я не получу две сборки на двух ветвях, которые были сделаны ТОЧНО в то же время, то объединение файлов будет просто объединением двух.
Интересно, есть ли лучшие решения для этого? Стоит ли то, что я хочу (счетчик сборок)?
P.S. Если вам интересно, почему я делаю это как с количеством сборок, так и с количеством успешных сборок, это просто что-то личное. Мне нравится видеть, сколько я получаю для восстановления за мелкие опечатки и ошибки, которые я делаю, когда кодирую.
Редактировать: Я программирую на C и C ++, поэтому решение в любом из них работает для меня.