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