+sub repoconfig {
+ my $val;
+ eval {
+ my $pid = open(my $fh, '-|');
+ if (!$pid) {
+ exec('git-repo-config', '--get', 'merge.summary');
+ }
+ ($val) = <$fh>;
+ close $fh;
+ };
+ return $val;
+}
+
+sub current_branch {
+ my $fh;
+ my $pid = open($fh, '-|');
+ die "$!" unless defined $pid;
+ if (!$pid) {
+ exec('git-symbolic-ref', 'HEAD') or die "$!";
+ }
+ my ($bra) = <$fh>;
+ chomp($bra);
+ close $fh or die "$!";
+ $bra =~ s|^refs/heads/||;
+ if ($bra ne 'master') {
+ $bra = " into $bra";
+ } else {
+ $bra = "";
+ }
+ return $bra;
+}
+
+sub shortlog {
+ my ($tip) = @_;
+ my ($fh, @result);
+ my $pid = open($fh, '-|');
+ die "$!" unless defined $pid;
+ if (!$pid) {
+ exec('git-log', '--topo-order',
+ '--pretty=oneline', $tip, '^HEAD') or die "$!";
+ }
+ while (<$fh>) {
+ s/^[0-9a-f]{40}\s+//;
+ push @result, $_;
+ }
+ close $fh or die "$!";
+ return @result;
+}
+
+my @origin = ();