2013-07-30 5 views
2

Настройка макета простой проект SVN:Как предотвратить потерю истории фиксации в Subversion после слияния?

svnadmin create proj-repo 
svn co file://$PWD/proj-repo proj 
cd proj 
mkdir branches trunk tags features 
svn add * 
svn ci -m 'Basic SVN project setup.' 

Начало проекта:

cd trunk 
svn add README 
svn ci -m 'Add README' 

Реализовать функции:

svn cp . ^/features/linux-port 
cd ../../ 
svn co file://$PWD/proj-repo/features/linux-port proj-linux-port 
cd proj-linux-port 
svn ci -m "Implement feature 1." 
svn ci -m "Implement feature 2." 
svn ci -m 'Add last feature.' 

ли работу в главном Dev отрасли:

svn switch ^/trunk 
svn ci -m "Fix." 

Готовность к новым признакам:

svn merge --reintegrate ^/features/linux-port 
svn ci -m 'Integrate features.' 

Но теперь:

svn log . 

------------------------------------------------------------------------ 
r9 | user | 2013-07-30 18:38:01 +0300 (Tue, 30 Jul 2013) | 1 line 

Integrate features. 
------------------------------------------------------------------------ 
r8 | user | 2013-07-30 18:36:53 +0300 (Tue, 30 Jul 2013) | 1 line 

Fix. 

и:

svn diff -r9 

Index: README 
=================================================================== 
--- README  (revision 8) 
+++ README  (revision 9) 
@@ -1,2 +1,5 @@ 
hello fix 

+feature 1 
+ 
+feature 2 
+ 
+final feature 

Property changes on: . 
___________________________________________________________________ 
Added: svn:mergeinfo 
    Merged /features/linux-port:r2-8 

Так я теряю последующие коммиты для каждого отдельного от особенностей /features/linux-port:r2-8. Можно ли сохранить их без переключения на HG/Git/Bzr/Fossil?

ОБНОВЛЕНИЕ Обычно мы пишем хорошие сообщения о фиксации, где объясняем решение о кодировании и помещаем ссылки на BTS. SVN стереть эту информацию, и нам очень грустно.

Значит, нам нужна старая школа Changelog?

ответ

3

О, я просто внимательно прочитать:

svn help log 

    -g [--use-merge-history] : use/display additional information from merge 

Так полная история доступны с обычными инструментами SVN.

Чтобы увидеть фактический синтаксис пути дифф использование шлема:

svn diff -c 4 ^/ 

Также я нашел apropriate раздел в официальной документации:

http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html

The svn blame command also takes the --use-merge-history (-g) option. 
If this option is neglected, somebody looking at a line-by-line annotation 
of file may get the mistaken impression that you were responsible for the lines 
that fixed a certain error 
+1

Хах, я собирался сказать, что это, на самом деле , вот как это делается. Обычно я устанавливаю нечто вроде 'alias svnmlog = 'svn log -g'', чтобы убедиться, что не забываю. ' – Wrikken

Смежные вопросы