Генерация changelog'а автоматом
От: montegava  
Дата: 11.03.09 08:05
Оценка:
Всем привет.

У меня стоит SVN + TRAC.

Есть программный продук, каждый месяц к которому выходим новый релиз. С релизом идет описание всех внесенных изменений от релиза к релизу — Release Notes.

Возникла необходимость, чтобы генерация changelog'а поисходила автоматом и при сборке нового релиза и включалась в Release Notes.

Раньше все происходило банальным запросом с трака. После этого шла редакторская работа — формировался Release Notes и включался в сборку.

Вопрос: можно ли автоматизировать процесс формирования Release Notes?

PS: буду рад любым советам. Еще хотелось бы узнать есть ли стандарт формирования Release Notes? И вообще, как происходит этот процесс в крупных софтварных компаниях? Поделитесь ссылками. Заранее спасибо!
svn release notes changelog
Re: Генерация changelog'а автоматом
От: peter__pan Украина  
Дата: 13.03.09 14:38
Оценка:
Здравствуйте, montegava, Вы писали:

M>Всем привет.


M>У меня стоит SVN + TRAC.


M>Есть программный продук, каждый месяц к которому выходим новый релиз. С релизом идет описание всех внесенных изменений от релиза к релизу — Release Notes.


M>Возникла необходимость, чтобы генерация changelog'а поисходила автоматом и при сборке нового релиза и включалась в Release Notes.


M>Раньше все происходило банальным запросом с трака. После этого шла редакторская работа — формировался Release Notes и включался в сборку.


M>Вопрос: можно ли автоматизировать процесс формирования Release Notes?


Я на старом проекте использовал bat файл для генерации Release Notes, потом ручками подправилял(бывало лень писать коменты при комите ):
@echo off
rem Generate release notes file from svn log report
echo Start generate release notes file...
echo.

rem Initialize local variables
set gen_file_name=ReleaseNotesGen
set gen_file_ext=txt

set project_url= http://srv/svn/....
set temp_file=temp.txt
set oldrev_file=old_revision.txt

rem Get number revision
set rev=0
svn info %project_url% > %temp_file%
for /f "delims=: tokens=1,2" %%i in (%temp_file%) do if %%i == Revision set /a rev=%%j + 0
del %temp_file%

rem Get old save revision
set old_rev=0
if exist %oldrev_file% for /f %%i in (%oldrev_file%) do set /a old_rev=%%i + 0

echo   url:           %project_url%
echo   rev:           %rev%
echo   old rev:       %old_rev%

rem If rev == old_rev exit becous alredy generate
if %rev% == %old_rev% (
   echo.
   echo error: file is alredy generate
   exit /b 0
)

rem Save new revision to file
echo %rev% > %oldrev_file%

rem Get log message for [old_rev+1;rev]  revision
set gen_file=%gen_file_name%_%rev%.%gen_file_ext%
set /a old_rev=%old_rev%+1
for /l %%i in (%rev%, -1, %old_rev%) do (
    echo ================================================================================ >> %gen_file%
    echo %%i: >> %gen_file%
    echo ================================================================================ >> %gen_file%
    svn propget svn:log --revprop -r %%i %project_url% >> %gen_file%
    echo -------------------------------------------------------------------------------- >> %gen_file%
    echo. >> %gen_file%
)

echo   generate file: %gen_file%
echo.
echo ...generate file is done.


главное чтоб был прописан путь к svn.exe.
генеритца два файла:
— old_revision.txt запоминает ревизию последней генерации.
— ReleaseNotesGen_1600.txt файл из release notes (где 1600 номер ревизии для которой делалась генарация).

Можна поправить файл что выводило в нужном формате.


M>PS: буду рад любым советам. Еще хотелось бы узнать есть ли стандарт формирования Release Notes? И вообще, как происходит этот процесс в крупных софтварных компаниях? Поделитесь ссылками. Заранее спасибо!
Re: Генерация changelog'а автоматом
От: Tom Россия http://www.RSDN.ru
Дата: 16.03.09 12:45
Оценка:
Здравствуйте, montegava, Вы писали:

M>Всем привет.


M>У меня стоит SVN + TRAC.


M>Есть программный продук, каждый месяц к которому выходим новый релиз. С релизом идет описание всех внесенных изменений от релиза к релизу — Release Notes.


M>Возникла необходимость, чтобы генерация changelog'а поисходила автоматом и при сборке нового релиза и включалась в Release Notes.


M>Раньше все происходило банальным запросом с трака. После этого шла редакторская работа — формировался Release Notes и включался в сборку.


M>Вопрос: можно ли автоматизировать процесс формирования Release Notes?


M>PS: буду рад любым советам. Еще хотелось бы узнать есть ли стандарт формирования Release Notes? И вообще, как происходит этот процесс в крупных софтварных компаниях? Поделитесь ссылками. Заранее спасибо!


Стандартов как я понимаю нет. Можешь взять один из продуктов, например тот же svn и следовать их стандарту.
По поводу автоматизации, как я понимаю часть автоматизации у вас уже есть — генерация по TRAC. Надо просто сделать так, что бы ручная правка была бы не нужна.
В своё время у меня была идея использовать коментарии к комитам SVN, ибо очень часто, то, что пишется в RN совпадает с коментариями к комитам.
Но полностью использовать коментарии к комитам — тоже не правильно. По этому, я думал делать так, использовать в коментарии к комиту специальный тэг.
например <RN></RN>. И всё что указано в нём писать маленьким скриптиком в файл ReleaseNotes.txt который бы генерировался автоматически, а всё что указано вне этого тэга опускать.
Народная мудрось
всем все никому ничего(с).
Re: Генерация changelog'а автоматом
От: montegava  
Дата: 16.03.09 16:11
Оценка:
Спасибо вам за то, что откликнулись ...

Думаю будет правильным использование тегов при коммитах — тоесть так как писал Tom. Единственная проблема стандартизировать теги и заставить программистов добросовестно вести коммиты.

Кроме того надо бы будет написать прогруммулину, которая выдирает логи с СВН , анализирует их(регулярками) и включает в описание. Что то типа консольной программы, параметром к которой передается путь к репозиторию.

При этом логичным будет использование bat файла для генерации Release Notes — тоесть так как писал peter__pan.
Таким образом батник будет собирать проект + формировать Release Notes + собирать сам инсталлятор с обновелнным RN.

Правда возникает вопрос — как же отделить один релиз от второго. Думаю здесь тоже можно обойтись специализированным тегом....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.