Signed-Off-By: Steven Walter <stevenrwalter@gmail.com>
On Tue, May 15, 2012 at 8:09 AM, Avishay Lavie <avishay.lavie@gmail.com> wrote:
Show 70 quoted lines
> (Adding previous authors of git-svn.perl)
>
> ---------- Forwarded message ----------
> From: Avishay Lavie <avishay.lavie@gmail.com>
> Date: Tue, May 15, 2012 at 12:09 PM
> Subject: PATCH: git-svn: support rebase --preserve-merges
> To: git@vger.kernel.org
>
>
> From: Avishay Lavie <avishay.lavie@gmail.com>
> Date: Tue, 15 May 2012 11:45:50 +0300
> Subject: [PATCH] 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.
>
> Signed-off-by: Avishay Lavie <avishay.lavie@gmail.com>
> ---
> Documentation/git-svn.txt | 2 ++
> git-svn.perl | 4 +++-
> 2 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
> index 34ee785..0d52997 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 ca038ec..e86d60b 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -84,7 +84,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;
> @@ -233,6 +233,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',
> @@ -1570,6 +1571,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;
> }
>
> --
> 1.7.9.msysgit.0