Skip to content

Commit

Permalink
Make Octopus merge message a bit nicer.
Browse files Browse the repository at this point in the history
Linus says that 'of .' to mean the commits came from the local repository
was too confusing and ugly -- I tend to agree with him.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Sep 21, 2005
1 parent f887564 commit 63f1aa6
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 11 deletions.
16 changes: 10 additions & 6 deletions git-fetch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,21 +58,25 @@ append_fetch_head () {
# remote-nick is the URL given on the command line (or a shorthand)
# remote-name is the $GIT_DIR relative refs/ path we computed
# for this refspec.
remote_1_=$(expr "$remote_" : '\(.*\)\.git/*$') &&
remote_="$remote_1_"
case "$remote_" in
. | ./) where_= ;;
*) where_=" of $remote_" ;;
esac
case "$remote_name_" in
HEAD)
note_= ;;
refs/heads/*)
note_="$(expr "$remote_name_" : 'refs/heads/\(.*\)')"
note_="branch '$note_' of " ;;
note_="branch '$note_'" ;;
refs/tags/*)
note_="$(expr "$remote_name_" : 'refs/tags/\(.*\)')"
note_="tag '$note_' of " ;;
note_="tag '$note_'" ;;
*)
note_="$remote_name of " ;;
note_="$remote_name" ;;
esac
remote_1_=$(expr "$remote_" : '\(.*\)\.git/*$') &&
remote_="$remote_1_"
note_="$note_$remote_"
note_="$note_$where_"

# 2.6.11-tree tag would not be happy to be fed to resolve.
if git-cat-file commit "$head_" >/dev/null 2>&1
Expand Down
81 changes: 76 additions & 5 deletions git-pull.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,81 @@ then
fi

merge_head=$(sed -e 's/ .*//' "$GIT_DIR"/FETCH_HEAD | tr '\012' ' ')
merge_name=$(
perl -e 'print join("; ", map { chomp; s/^[0-9a-f]* //; $_ } <>)' \
"$GIT_DIR"/FETCH_HEAD
)

case "$merge_head" in
?*' '?*)
merge_name="Octopus merge of "$(
perl -e '
my @src;
my %src;
sub andjoin {
my ($label, $labels, $stuff, $src) = @_;
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]");
}
if ($src ne ".") {
$m .= " from $src";
}
return $m;
}
while (<>) {
my ($bname, $tname, $gname, $src);
s/^[0-9a-f]* //;
if (s/ of (.*)$//) {
$src = $1;
} else {
$src = ".";
}
if (! exists $src{$src}) {
push @src, $src;
$src{$src} = { BRANCH => [], TAG => [], GENERIC => [] };
}
if (/^branch (.*)$/) {
push @{$src{$src}{BRANCH}}, $1;
}
elsif (/^tag (.*)$/) {
push @{$src{$src}{TAG}}, $1;
}
else {
push @{$src{$src}{GENERIC}}, $1;
}
}
my @msg;
for my $src (@src) {
my $bag = $src{$src}{BRANCH};
if (@{$bag}) {
push @msg, andjoin("branch", "branches", $bag, $src);
}
$bag = $src{$src}{TAG};
if (@{$bag}) {
push @msg, andjoin("tag", "tags", $bag, $src);
}
$bag = $src{$src}{GENERIC};
if (@{$bag}) {
push @msg, andjoin("commit", "commits", $bag, $src);
}
}
print join("; ", @msg);
' "$GIT_DIR"/FETCH_HEAD
)
;;
*)
merge_name="Merge "$(sed -e 's/^[0-9a-f]* //' \
"$GIT_DIR"/FETCH_HEAD)
;;
esac

case "$merge_head" in
'')
Expand All @@ -69,4 +140,4 @@ case "$merge_head" in
;;
esac

git-merge $no_summary $strategy_args "Merge $merge_name" HEAD $merge_head
git-merge $no_summary $strategy_args "$merge_name" HEAD $merge_head

0 comments on commit 63f1aa6

Please sign in to comment.