设置简单的SVN项目布局:
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.'
在主开发部门做工作:
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?
答案 0 :(得分:3)
哦,我只是仔细阅读:
svn help log
-g [--use-merge-history] : use/display additional information from merge
通常的SVN工具可以提供完整的历史记录。
要查看实际差异使用帽子路径语法:
svn diff -c 4 ^/
我也在官方文档中找到了合适的部分:
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