diff options
author | Avishay Lavie <avishay.lavie@gmail.com> | 2012-05-15 11:45:50 +0300 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2012-05-16 19:21:43 -0700 |
commit | b64e1f58158d1d1a8eafabbbf002a1a3c1d72929 (patch) | |
tree | 3a1b5df536bec31ef7393c5ace1afce5a21efb1f | |
parent | Update draft release notes for 12th batch (diff) | |
download | tgif-b64e1f58158d1d1a8eafabbbf002a1a3c1d72929.tar.xz |
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>
-rw-r--r-- | Documentation/git-svn.txt | 2 | ||||
-rwxr-xr-x | git-svn.perl | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 34ee785064..0d52997b8d 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -572,6 +572,8 @@ config key: svn.repackflags --merge:: -s<strategy>:: --strategy=<strategy>:: +-p:: +--preserve-merges:: These are only used with the 'dcommit' and 'rebase' commands. + Passed directly to 'git rebase' when using 'dcommit' if a diff --git a/git-svn.perl b/git-svn.perl index 31d02b5f70..c84842ff03 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -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; } |