Всем привет.
У меня стоит SVN + TRAC.
Есть программный продук, каждый месяц к которому выходим новый релиз. С релизом идет описание всех внесенных изменений от релиза к релизу — Release Notes.
Возникла необходимость, чтобы генерация changelog'а поисходила автоматом и при сборке нового релиза и включалась в Release Notes.
Раньше все происходило банальным запросом с трака. После этого шла редакторская работа — формировался Release Notes и включался в сборку.
Вопрос: можно ли автоматизировать процесс формирования Release Notes?
PS: буду рад любым советам. Еще хотелось бы узнать есть ли стандарт формирования Release Notes? И вообще, как происходит этот процесс в крупных софтварных компаниях? Поделитесь ссылками. Заранее спасибо!
Здравствуйте, 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? И вообще, как происходит этот процесс в крупных софтварных компаниях? Поделитесь ссылками. Заранее спасибо!
Спасибо вам за то, что откликнулись ...
Думаю будет правильным использование тегов при коммитах — тоесть так как писал Tom. Единственная проблема стандартизировать теги и заставить программистов добросовестно вести коммиты.
Кроме того надо бы будет написать прогруммулину, которая выдирает логи с СВН , анализирует их(регулярками) и включает в описание. Что то типа консольной программы, параметром к которой передается путь к репозиторию.
При этом логичным будет использование bat файла для генерации Release Notes — тоесть так как писал peter__pan.
Таким образом батник будет собирать проект + формировать Release Notes + собирать сам инсталлятор с обновелнным RN.
Правда возникает вопрос — как же отделить один релиз от второго. Думаю здесь тоже можно обойтись специализированным тегом....