X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=git-debrebase;h=0e2e0b7438c76cad9d9f3020896da15a117c6a7d;hb=4f5ea68c4b64ec065e40240e9f0df6ed4279593d;hp=b3a78ae2f0139678d2271e5db146bb454fcdfa53;hpb=d70807ddc00b2d3313076fe81264db36a6c00260;p=dgit.git diff --git a/git-debrebase b/git-debrebase index b3a78ae2..0e2e0b74 100755 --- a/git-debrebase +++ b/git-debrebase @@ -788,6 +788,8 @@ sub update_head_checkout ($$$) { sub update_head_postlaunder ($$$) { my ($old, $tip, $reflogmsg) = @_; + return if $tip eq $old; + print "git-debrebase: laundered (head was $old)\n"; update_head $old, $tip, $reflogmsg; # no tree changes except debian/patches runcmd @git, qw(rm --quiet --ignore-unmatch -rf debian/patches); @@ -803,6 +805,14 @@ sub cmd_launder () { printf "# last upstream merge\n%s\n", $last_upstream_merge; } +sub defaultcmd_rebase () { + my $old = get_head(); + my ($tip,$breakwater) = walk $old; + update_head_postlaunder $old, $tip, 'launder for rebase'; + @ARGV = qw(-i) unless @ARGV; # make configurable + runcmd @git, qw(rebase), @ARGV, $breakwater; +} + sub cmd_analyse () { die if ($ARGV[0]//'') =~ m/^-/; badusage "too many arguments to analyse" if @ARGV>1; @@ -1067,10 +1077,14 @@ chdir $toplevel or die "chdir $toplevel: $!"; $rd = fresh_playground "$playprefix/misc"; -my $cmd = shift @ARGV; -my $cmdfn = $cmd; -$cmdfn =~ y/-/_/; -$cmdfn = ${*::}{"cmd_$cmdfn"}; +if (!@ARGV || $ARGV[0] =~ m{^-}) { + defaultcmd_rebase(); +} else { + my $cmd = shift @ARGV; + my $cmdfn = $cmd; + $cmdfn =~ y/-/_/; + $cmdfn = ${*::}{"cmd_$cmdfn"}; -$cmdfn or badusage "unknown git-debrebase sub-operation $cmd"; -$cmdfn->(); + $cmdfn or badusage "unknown git-debrebase sub-operation $cmd"; + $cmdfn->(); +}