git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric Wong <normalperson@yhbt.net>
To: "Karl Hasselström" <kha@treskal.com>
Cc: Junio C Hamano <junkio@cox.net>, git@vger.kernel.org
Subject: Re: [git-svn PATCH] Add --no-rebase option to git-svn dcommit
Date: Fri, 4 May 2007 00:59:08 -0700	[thread overview]
Message-ID: <20070504075908.GB17526@muzzle> (raw)
In-Reply-To: <20070503054749.20115.53805.stgit@yoghurt>

Karl Hasselström <kha@treskal.com> 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@yhbt.net>

> Signed-off-by: Karl Hasselström <kha@treskal.com>
> ---
> 
> 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

  parent reply	other threads:[~2007-05-04  7:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-03  5:51 [git-svn PATCH] Add --no-rebase option to git-svn dcommit Karl Hasselström
2007-05-03  6:48 ` David Kågedal
2007-05-03 15:53   ` Seth Falcon
2007-05-04  7:59 ` Eric Wong [this message]
2007-05-04  8:04   ` Eric Wong
2007-05-04 10:26     ` Karl Hasselström
2007-05-04  9:08   ` David Kågedal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070504075908.GB17526@muzzle \
    --to=normalperson@yhbt.net \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=kha@treskal.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).