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>
This commit is contained in:
@ -106,7 +106,7 @@ my ($_stdin, $_help, $_edit,
|
||||
$_message, $_file, $_branch_dest,
|
||||
$_template, $_shared,
|
||||
$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
|
||||
$_merge, $_strategy, $_dry_run, $_local,
|
||||
$_merge, $_strategy, $_preserve_merges, $_dry_run, $_local,
|
||||
$_prefix, $_no_checkout, $_url, $_verbose,
|
||||
$_git_format, $_commit_url, $_tag, $_merge_info, $_interactive);
|
||||
$Git::SVN::_follow_parent = 1;
|
||||
@ -255,6 +255,7 @@ my %cmd = (
|
||||
'local|l' => \$_local,
|
||||
'fetch-all|all' => \$_fetch_all,
|
||||
'dry-run|n' => \$_dry_run,
|
||||
'preserve-merges|p' => \$_preserve_merges,
|
||||
%fc_opts } ],
|
||||
'commit-diff' => [ \&cmd_commit_diff,
|
||||
'Commit a diff between two trees',
|
||||
@ -1592,6 +1593,7 @@ sub rebase_cmd {
|
||||
push @cmd, '-v' if $_verbose;
|
||||
push @cmd, qw/--merge/ if $_merge;
|
||||
push @cmd, "--strategy=$_strategy" if $_strategy;
|
||||
push @cmd, "--preserve-merges" if $_preserve_merges;
|
||||
@cmd;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user