git/list[1] front-page[2] threads[3] people[4] search[5] about
 

RE: [PATCH] git-svn: support rebase --preserve-merges

From
Avishay Lavie <avishay.lavie@gmail.com>
Date
May 15, 2012, 12:09 UTC
Message-ID
<CAHkK2boS2ffnz+vz1jRqKHy1vQcrcd6FHEdWgY-btHZaCapdkA@mail.gmail.com>
(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
Next: Steven Walter
Message 1 of 2 in “RE: [PATCH] git-svn: support rebase --preserve-merges”
  1. Avishay LavieMay 15, 2012
  2. Steven WalterMay 22, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.