如何将SVN中的分支合并回所有提交历史记录?我知道在Git中我可以使用
merge -squash
Run Code Online (Sandbox Code Playgroud)
SVN中有没有等效的命令?我正在使用SVN 1.6.
Ber*_*ben 39
使用Subversion 1.5或更高版本,合并将记录在svn:mergeinfo属性中的本地工作副本上.所以这些信息不会丢失.
如果使用svn log -g而不是正常,则可以看到合并的修订版svn log.
正常合并执行为
svn merge -rREV1:REV2 svn://server/branch my_trunk_wc
Run Code Online (Sandbox Code Playgroud)
但是如果使用分支,有时使用重新整合合并会更方便.在这种情况下,您应首先使用类似的方式将所有主干更改合并到分支
svn merge svn://server/trunk my_branch_wc
Run Code Online (Sandbox Code Playgroud)
(这会合并尚未合并的所有内容)
将此更改提交到分支后,您可以使用
svn merge --reintegrate svn://server/branch my_trunk_wc
Run Code Online (Sandbox Code Playgroud)
将所有更改作为单个提交移动.(在此操作之后,您应该删除分支)
要创建分支的合并并为分支中的每个提交创建一个提交,您可以使用脚本,我使用以下方法:
#/bin/bash
BRANCH="http://your branch url"
for i in {1127..1138} # list of revisions
do
REV=$i
echo $REV $BRANCH
echo merged $REV from $BRANCH > tmps.commit
svn log -c $REV $BRANCH >> tmps.commit
svn up
svn merge -c $REV $BRANCH ./
svn commit -F tmps.commit
rm tmps.commit
done
Run Code Online (Sandbox Code Playgroud)
这将签出您为特定分支指定的每个修订,并在当前目录上执行提交,从而保留带有相应消息的每个单个更改。
合并时我有点生疏,但不应该这样做吗?
svn merge -rREV1:REV2 svn://server/branch my_trunk_wc
Run Code Online (Sandbox Code Playgroud)
看到:
svn merge --help
Run Code Online (Sandbox Code Playgroud)