Прежде всего, я рекомендую вам сделать что-то иное, чем ваш print_info()
подход, так как он не очень гибкий - что, если вы хотите использовать версию, а не просто распечатать ее в STDOUT, или что, если вы хотите сообщить оверсия в сообщении об ошибке STDERR?static
метод, возвращающий константную строку символов, был бы более универсальным.
Что касается выбора номера версии, вы, безусловно, можете использовать ключевые слова SVN, которые могут быть подставлены в текст вашего тела.код.Например, (следуя одному из примеров, приведенных в приведенной ссылке), если у вас есть строка
char[] versionString = "commit revision $Rev$";
и вы включили подстановку соответствующего ключевого слова svn propset svn:keywords "Rev" file.cpp
, при следующем обновлении клиент SVN выполнит обновлениеизмените текст на что-то вроде
char[] versionString = "commit revision $Rev: 12 $";
, и в следующий раз, когда вы подтвердите его, строка будет перезаписана на новую правильную строку, например
char[] versionString = "commit revision $Rev: 13 $";
Если вы используете SVN хорошо, выдолжны быть ветвления и теги, в этом случае информация о ветвях и тегах (которые являются частью ключевого слова $URL$
) являются полезными вещами для включения в строку версии.$Revision$
также полезно для предоставления вам значения, которое меняется между обновлениями.Помните, однако, что ключевые слова обновляются только при выполнении обновления (извлечение, фиксация и т. Д.).Если вы сделаете изменения в своем коде, а затем скомпилируете его, сообщенное значение $Revision$
будет таким же, как при первоначальном извлечении кода.Насколько я знаю, единственный способ избежать этого - принять процедуру выполнения коммита вашего кода перед компиляцией новой версии вашего программного обеспечения - это хорошо работает, если вы комбинируете это с процессом пометки выпусковв пределах SVN.