Karl Hasselström <kha@xxxxxxxxxxx> wrote: > git-svn dcommit exports commits to Subversion, then imports them back > to git again, and last but not least rebases or resets HEAD to the > last of the new commits. I guess this rebasing is convenient when > using just git, but when the commits to be exported are managed by > StGIT, it's really annoying. So add an option to disable this > behavior. And document it, too! Cool, I've been planning to add this myself, too. Acked-by: Eric Wong <normalperson@xxxxxxxx> > Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> > --- > > Arguably, the switch should be --rebase instead, and default to not > rebase. But that would change the existing behavior, and possibly make > dcommit less convenient to use for at least the person who implemented > the existing behavior. Opinions? > > Documentation/git-svn.txt | 3 +++ > git-svn.perl | 33 ++++++++++++++++++--------------- > 2 files changed, 21 insertions(+), 15 deletions(-) > > diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt > index 62d7ef8..fcdeeaa 100644 > --- a/Documentation/git-svn.txt > +++ b/Documentation/git-svn.txt > @@ -125,6 +125,9 @@ and have no uncommitted changes. > alternative to HEAD. > This is advantageous over 'set-tree' (below) because it produces > cleaner, more linear history. > ++ > +--no-rebase;; > + After committing, do not rebase or reset. > -- > > 'log':: > diff --git a/git-svn.perl b/git-svn.perl > index 6657e10..3c4f490 100755 > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -55,7 +55,7 @@ $sha1_short = qr/[a-f\d]{4,40}/; > my ($_stdin, $_help, $_edit, > $_message, $_file, > $_template, $_shared, > - $_version, $_fetch_all, > + $_version, $_fetch_all, $_no_rebase, > $_merge, $_strategy, $_dry_run, $_local, > $_prefix, $_no_checkout, $_verbose); > $Git::SVN::_follow_parent = 1; > @@ -114,6 +114,7 @@ my %cmd = ( > 'verbose|v' => \$_verbose, > 'dry-run|n' => \$_dry_run, > 'fetch-all|all' => \$_fetch_all, > + 'no-rebase' => \$_no_rebase, > %cmt_opts, %fc_opts } ], > 'set-tree' => [ \&cmd_set_tree, > "Set an SVN repository to a git tree-ish", > @@ -413,21 +414,23 @@ sub cmd_dcommit { > return; > } > $_fetch_all ? $gs->fetch_all : $gs->fetch; > - # we always want to rebase against the current HEAD, not any > - # head that was passed to us > - my @diff = command('diff-tree', 'HEAD', $gs->refname, '--'); > - my @finish; > - if (@diff) { > - @finish = rebase_cmd(); > - print STDERR "W: HEAD and ", $gs->refname, " differ, ", > - "using @finish:\n", "@diff"; > - } else { > - print "No changes between current HEAD and ", > - $gs->refname, "\nResetting to the latest ", > - $gs->refname, "\n"; > - @finish = qw/reset --mixed/; > + unless ($_no_rebase) { > + # we always want to rebase against the current HEAD, not any > + # head that was passed to us > + my @diff = command('diff-tree', 'HEAD', $gs->refname, '--'); > + my @finish; > + if (@diff) { > + @finish = rebase_cmd(); > + print STDERR "W: HEAD and ", $gs->refname, " differ, ", > + "using @finish:\n", "@diff"; > + } else { > + print "No changes between current HEAD and ", > + $gs->refname, "\nResetting to the latest ", > + $gs->refname, "\n"; > + @finish = qw/reset --mixed/; > + } > + command_noisy(@finish, $gs->refname); > } > - command_noisy(@finish, $gs->refname); > } > > sub cmd_find_rev { > -- Eric Wong - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html