Re: [PATCH] Fix git to be (more) ANSI C99 compliant.
- From
Junio C Hamano <junkio@cox.net>
- Date
- Jun 20, 2006, 08:58 UTC
- Message-ID
- <7vr71kcien.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <4497AED4.5060505@lsrfire.ath.cx>
Rene Scharfe <rene.scharfe@lsrfire.ath.cx> writes:
Show 11 quoted lines
> Junio C Hamano schrieb: >> BTW, I think we would probably want to have this patch on top of >> Rene's patch. In all instances, the variable "buf" is of type >> "const char *" and the existing casts do not make sense to me. >> >> diff --git a/builtin-tar-tree.c b/builtin-tar-tree.c >> index 5c8a5f0..39a61b6 100644 > > Your patch reverts builtin-tar-tree.c to the version which is > currently both in master and next, which I think is a good > change. However, could it be avoided at merge time?
Sorry for attributing those "casts [that] do not make sense to me" to you -- it is not your code but part of Florian's patch.
I think applying the patch in question on top of Florian's 11172e would be the most sensible, since that is currently the tip of ff/c99 topic branch whose early parts have been merged to "next" and the tip to "pu". When Linus feels as sympathetic as I do, we can pull the rest of ff/c99 branch to "next" and then eventually to "master" and the patch will be merged together without introducing the nonsense casts.
Another possibility is to amend the tip of ff/c99 topic branch, since it is not merged to "next" yet. I promised not to rewind "master" nor "next", but never made promises not to rewind "pu", so it is a fair game. I think it is simpler and cleaner, so that will be what I will do.
Show 5 quoted lines
> OT: I found the blobs 5c8a5f0 and 39a61b6 by guessing (they are > builtin-tar-tree.c in pu and master, respectively). OK, that > was easy. But is there a way to reversely look up an object > without guessing, i.e. find out which commit(s) introduced a > certain blob?
You could do something like this (totally untested).
Going from the above "diff --git" index line you have object name abbreviations and pathnames as clues. To take advantage of it, you could use "git rev-list pu -- builtin-tar-tree.c" instead of unlimited list.
$ git rev-list pu |
git diff-tree -r --stdin --pretty |
perl -e '
my @lines = ();
sub flush_em {
my @found = ();
my @comment = ();
for my $l (@lines) {
if ($l !~ /^:/) {
push @comment, $l;
next;
}
for (@ARGV) {
if ($l =~ / $_/) {
push @found, $l;
last;
}
}
}
if (@found) {
print join("", @comment, @found);
}
@lines = ();
}
while (<STDIN>) {
if (/^commit [0-9a-f]{40}$/) { flush_em(); }
push @lines, $_;
}
flush_em();
' 39a61b6 5c8a5f0