chiark / gitweb /
git-debrebase: provide default rebase action
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 31 Jan 2018 16:41:20 +0000 (16:41 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 11:25:49 +0000 (12:25 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase

index 2fa4947e69f6f175e826651b8c4320974a272b93..0e2e0b7438c76cad9d9f3020896da15a117c6a7d 100755 (executable)
@@ -805,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;
@@ -1069,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->();
+}