X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=git-branch-manager;h=42cea14ff012b56e9309e89b0ac1d27930f71e5d;hb=8a57b4a8d797b7ae98de93fa87848631875597ff;hp=f03dde9b4e3d474ef4136da6780d61d1823409d5;hpb=4f1caff063c235a10a9dadde3b8326ae3e1c263b;p=xonotic%2Fdiv0-gittools.git diff --git a/git-branch-manager b/git-branch-manager index f03dde9..42cea14 100755 --- a/git-branch-manager +++ b/git-branch-manager @@ -391,7 +391,7 @@ sub parse_log() } $cur_commit = $cur_msg = undef; my @commits = (); - for((split /\n/, check_defined "git-log: $!", backtick 'git', 'log', '--no-merges', '--topo-order', '--reverse', '--pretty=fuller', @datefilter, "$revprefix$branch"), undef) + for((split /\n/, check_defined "git-log: $!", backtick 'git', 'log', '--topo-order', '--reverse', '--pretty=fuller', @datefilter, "$revprefix$branch"), undef) { if(defined $cur_commit and (not defined $_ or /^commit (\S+)/)) { @@ -416,27 +416,33 @@ sub parse_log() my $data = $logmsg{$_}; if($data =~ /::stable-branch::unmerge=(\S+)/) { + next if not defined $history{$1}; push @logdata, ['unmerge', $1]; } elsif($data =~ /::stable-branch::merge=(\S+)/) { + next if not defined $history{$1}; push @logdata, ['merge', $1]; } elsif($data =~ /::stable-branch::reject=(\S+)/) { + next if not defined $history{$1}; push @logdata, ['reject', $1]; } elsif($data =~ /::stable-branch::unreject=(\S+)/) { + next if not defined $history{$1}; push @logdata, ['unreject', $1]; } elsif($data =~ /::stable-branch::reset=(\S+)/) { + next if not defined $history{$1}; @logdata = (); $base = $1; } elsif($data =~ /::stable-branch::rebase=(\S+)/) { + next if not defined $history{$1}; $lastrebase->[0] = 'ignore' if defined $lastrebase; push @logdata, ($lastrebase = ['rebase', $1]); @@ -648,13 +654,24 @@ sub opt_rebase($$) my $commit_id = $1; my $l = rebase_log $r, parse_log(); local $pebkac = 0; - local $do_commit = 0; eval { - reset_to_commit $r; - run_script @{$l->{log}}; - run 'git', 'commit', '--allow-empty', '-m', "::stable-branch::rebase=$r" - or die "git-commit: $!"; + if($cmd eq 'rebase') + { + local $do_commit = 0; + reset_to_commit $r; + run_script @{$l->{log}}; + run 'git', 'commit', '--allow-empty', '-m', "::stable-branch::rebase=$r" + or die "git-commit: $!"; + } + elsif($cmd eq 'resetrebase') + { + run_script ['reset', $r], @{$l->{log}}; + } + elsif($cmd eq 'hardresetrebase') + { + run_script ['hardreset', $r], @{$l->{log}}; + } 1; } or do @@ -762,6 +779,8 @@ Usage: $0 {--reset|-R} revision-hash $0 {--hardreset|-H} revision-hash $0 {--rebase|-b} revision-hash + $0 {--resetrebase|-B} revision-hash + $0 {--hardresetrebase} revision-hash EOF exit 1; } @@ -792,6 +811,8 @@ my $result = GetOptions( "log|l:s", handler \&opt_list, "outstanding|o:s", handler \&opt_list, "rebase|b=s", handler \&opt_rebase, + "resetrebase|B=s", handler \&opt_rebase, + "hardresetrebase=s", handler \&opt_rebase, "skip", handler \$skip, "merge|m=s{,}", handler sub { run_script ['merge', $_[1]]; }, "unmerge|u=s{,}", handler sub { run_script ['unmerge', $_[1]]; },