-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Including the current branch in the list of heads being merged was not a good idea, so drop it. And shorten the message by grouping branches and tags together to form a single line. Signed-off-by: Junio C Hamano <junkio@cox.net>
- Loading branch information
Junio C Hamano
committed
Sep 23, 2005
1 parent
f8ff0c0
commit c8b48ba
Showing
4 changed files
with
99 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
#!/usr/bin/perl -w | ||
# | ||
# Copyright (c) 2005 Junio C Hamano | ||
# | ||
# Read .git/FETCH_HEAD and make a human readable merge message | ||
# by grouping branches and tags together to form a single line. | ||
|
||
use strict; | ||
|
||
my @src; | ||
my %src; | ||
sub andjoin { | ||
my ($label, $labels, $stuff) = @_; | ||
my $l = scalar @$stuff; | ||
my $m = ''; | ||
if ($l == 0) { | ||
return (); | ||
} | ||
if ($l == 1) { | ||
$m = "$label$stuff->[0]"; | ||
} | ||
else { | ||
$m = ("$labels" . | ||
join (', ', @{$stuff}[0..$l-2]) . | ||
" and $stuff->[-1]"); | ||
} | ||
return ($m); | ||
} | ||
|
||
while (<>) { | ||
my ($bname, $tname, $gname, $src); | ||
chomp; | ||
s/^[0-9a-f]* //; | ||
if (s/ of (.*)$//) { | ||
$src = $1; | ||
} else { | ||
# Pulling HEAD | ||
$src = $_; | ||
$_ = 'HEAD'; | ||
} | ||
if (! exists $src{$src}) { | ||
push @src, $src; | ||
$src{$src} = { | ||
BRANCH => [], | ||
TAG => [], | ||
GENERIC => [], | ||
# &1 == has HEAD. | ||
# &2 == has others. | ||
HEAD_STATUS => 0, | ||
}; | ||
} | ||
if (/^branch (.*)$/) { | ||
push @{$src{$src}{BRANCH}}, $1; | ||
$src{$src}{HEAD_STATUS} |= 2; | ||
} | ||
elsif (/^tag (.*)$/) { | ||
push @{$src{$src}{TAG}}, $1; | ||
$src{$src}{HEAD_STATUS} |= 2; | ||
} | ||
elsif (/^HEAD$/) { | ||
$src{$src}{HEAD_STATUS} |= 1; | ||
} | ||
else { | ||
push @{$src{$src}{GENERIC}}, $_; | ||
$src{$src}{HEAD_STATUS} |= 2; | ||
} | ||
} | ||
|
||
my @msg; | ||
for my $src (@src) { | ||
if ($src{$src}{HEAD_STATUS} == 1) { | ||
# Only HEAD is fetched, nothing else. | ||
push @msg, $src; | ||
next; | ||
} | ||
my @this; | ||
if ($src{$src}{HEAD_STATUS} == 3) { | ||
# HEAD is fetched among others. | ||
push @this, andjoin('', '', ['HEAD']); | ||
} | ||
push @this, andjoin("branch ", "branches ", | ||
$src{$src}{BRANCH}); | ||
push @this, andjoin("tag ", "tags ", | ||
$src{$src}{TAG}); | ||
push @this, andjoin("commit ", "commits ", | ||
$src{$src}{GENERIC}); | ||
my $this = join(', ', @this); | ||
if ($src ne '.') { | ||
$this .= " from $src"; | ||
} | ||
push @msg, $this; | ||
} | ||
print "Merge ", join("; ", @msg), "\n"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters