Skip to content

Commit b64e1f5

Browse files
avishEric Wong
authored andcommitted
git-svn: support rebase --preserve-merges
When git svn rebase is performed after an unpushed merge, the rebase operation follows both parents and replays both the user's local commits and those from the merged branch. This is usually not the intended behavior. This patch adds support for the --preserve-merges/-p flag which allows for a better workflow by re-applying merge commits as merges. [ew: fixed a minor syntax error] Signed-off-by: Avishay Lavie <avishay.lavie@gmail.com> Signed-off-by: Eric Wong <normalperson@yhbt.net>
1 parent 6a4a482 commit b64e1f5

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

Documentation/git-svn.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,8 @@ config key: svn.repackflags
572572
--merge::
573573
-s<strategy>::
574574
--strategy=<strategy>::
575+
-p::
576+
--preserve-merges::
575577
These are only used with the 'dcommit' and 'rebase' commands.
576578
+
577579
Passed directly to 'git rebase' when using 'dcommit' if a

git-svn.perl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ BEGIN
106106
$_message, $_file, $_branch_dest,
107107
$_template, $_shared,
108108
$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
109-
$_merge, $_strategy, $_dry_run, $_local,
109+
$_merge, $_strategy, $_preserve_merges, $_dry_run, $_local,
110110
$_prefix, $_no_checkout, $_url, $_verbose,
111111
$_git_format, $_commit_url, $_tag, $_merge_info, $_interactive);
112112
$Git::SVN::_follow_parent = 1;
@@ -255,6 +255,7 @@ BEGIN
255255
'local|l' => \$_local,
256256
'fetch-all|all' => \$_fetch_all,
257257
'dry-run|n' => \$_dry_run,
258+
'preserve-merges|p' => \$_preserve_merges,
258259
%fc_opts } ],
259260
'commit-diff' => [ \&cmd_commit_diff,
260261
'Commit a diff between two trees',
@@ -1592,6 +1593,7 @@ sub rebase_cmd {
15921593
push @cmd, '-v' if $_verbose;
15931594
push @cmd, qw/--merge/ if $_merge;
15941595
push @cmd, "--strategy=$_strategy" if $_strategy;
1596+
push @cmd, "--preserve-merges" if $_preserve_merges;
15951597
@cmd;
15961598
}
15971599

0 commit comments

Comments
 (0)