X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fdiv0-gittools.git;a=blobdiff_plain;f=git-branch-manager;h=2d319857a9024d2ef0e470442c09873601785af4;hp=43a80790c932612071974c5124d7ebd5bcff09cf;hb=a55cffa57fd814947e86bde4dfdf88af06d57e02;hpb=675f2d41effb6031f40088fedd6508d97370b84d diff --git a/git-branch-manager b/git-branch-manager index 43a8079..2d31985 100755 --- a/git-branch-manager +++ b/git-branch-manager @@ -16,12 +16,12 @@ my %color = my %html_style = ( - '' => "color: white; background-color: black", - 'outstanding' => "color: white; background-color: yellow", - 'unmerge' => "color: white; background-color: red", - 'merge' => "color: white; background-color: green", - 'base' => "color: white; background-color: lightblue", - 'previous' => "color: white; background-color: blue", + '' => "color: black; background-color: black", + 'outstanding' => "color: black; background-color: yellow", + 'unmerge' => "color: black; background-color: red", + 'merge' => "color: black; background-color: green", + 'base' => "color: black; background-color: lightblue", + 'previous' => "color: black; background-color: blue", ); my %name = @@ -70,7 +70,7 @@ my @datefilter = (); my $revprefix = ""; if($datefilter eq 'mergebase') { - chomp($revprefix = check_defined "git-merge-base: $!", backtick 'git', 'merge-base', $master, "HEAD"); + chomp($revprefix = check_defined "git-merge-base: $!", backtick 'git', 'merge-base', $master, $branch); $revprefix .= "^.."; } elsif($datefilter ne '') @@ -78,6 +78,9 @@ elsif($datefilter ne '') @datefilter = "--since=$datefilter"; } +# if set, don't actually merge/revert changes, just mark as such +my $skip = 0; + our $do_commit = 1; my $logcache = undef; sub reset_to_commit($) @@ -135,13 +138,18 @@ sub merge_commit($) local $ENV{GIT_AUTHOR_NAME} = $author; local $ENV{GIT_AUTHOR_EMAIL} = $email; local $ENV{GIT_AUTHOR_DATE} = $date; - run 'git', 'cherry-pick', '-n', $r - or run 'git', 'mergetool' - or die "git-mergetool: $!"; + if(!$skip) + { + run 'git', 'cherry-pick', '-n', $r + or run 'git', 'mergetool' + or die "git-mergetool: $!"; + } if($do_commit) { run 'git', 'commit', '-F', '.commitmsg' - or die "git-commit: $!"; + or (run 'git', 'mergetool' + and run 'git', 'commit', '-F', '.commitmsg') + or die "git-commit: $!"; } } @@ -182,13 +190,18 @@ sub unmerge_commit($) local $ENV{GIT_AUTHOR_NAME} = $author; local $ENV{GIT_AUTHOR_EMAIL} = $email; local $ENV{GIT_AUTHOR_DATE} = $date; - run 'git', 'revert', '-n', $r - or run 'git', 'mergetool' - or die "git-mergetool: $!"; + if(!$skip) + { + run 'git', 'revert', '-n', $r + or run 'git', 'mergetool' + or die "git-mergetool: $!"; + } if($do_commit) { run 'git', 'commit', '-F', '.commitmsg' - or die "git-commit: $!"; + or (run 'git', 'mergetool' + and run 'git', 'commit', '-F', '.commitmsg') + or die "git-commit: $!"; } } @@ -271,7 +284,7 @@ sub parse_log() } $cur_commit = $cur_msg = undef; my @commits = (); - for((split /\n/, check_defined "git-log: $!", backtick 'git', 'log', '--topo-order', '--reverse', '--pretty=fuller', @datefilter, "$revprefix"."HEAD"), 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+)/)) { @@ -481,7 +494,7 @@ sub opt_rebase($$) die "PEBKAC: not initialized" unless defined $l->{base}; } - my $msg = backtick 'git', 'log', '-1', '--pretty=fuller', @datefilter, 'HEAD' + my $msg = backtick 'git', 'log', '-1', '--pretty=fuller', @datefilter, $branch or die "git-log: $!"; $msg =~ /^commit (\S+)/s or die "Invalid git log output"; @@ -570,7 +583,8 @@ sub opt_list($$) { my ($action, $r) = @$_; my $m = $l->{logmsg}->{$r}; - printf "%s%s%s\n", $html_style{$action}, $name{$action}, escapeHTML($r), escapeHTML($cgi_url), escapeHTML($r), escapeHTML($m); + my $m_short = join ' ', map { s/^ (?!git-svn-id)(.)/$1/ ? $_ : () } split /\n/, $m; + printf "%s%s%s\n", $html_style{$action}, $name{$action}, escapeHTML($cgi_url), escapeHTML($r), escapeHTML($r), escapeHTML($m_short); } print "\n"; } @@ -631,13 +645,14 @@ my $result = GetOptions( "log|l:s", handler \&opt_list, "outstanding|o:s", handler \&opt_list, "rebase|b=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]]; }, "reset|R=s", handler sub { run_script ['reset', $_[1]]; }, "hardreset|H=s", handler sub { run_script ['hardreset', $_[1]]; }, "help|h", handler \&opt_help, "histsize|s=i", \$histsize, - "cgi|c=s", \$cgi_url + "cgi=s", \$cgi_url ); if(!$done) {