Re: [PATCH] git-relink: avoid hard linking in objects/info directory
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 30, 2008, 08:01 UTC
- Message-ID
- <7vd4rjivy5.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <b77c1dce0801292334p7c348744re6a7fdbb0f17d5b3@mail.gmail.com>
"Rafael Garcia-Suarez" <rgarciasuarez@gmail.com> writes:
Show 12 quoted lines
>> opendir(D,$master_dir . "objects/")
>> or die "Failed to open $master_dir/objects/ : $!";
>>
>> -my @hashdirs = grep !/^\.{1,2}$/, readdir(D);
>> +my @hashdirs = grep !/^(\.{1,2}|info)$/, readdir(D);
>
> That looks a bit fragile. If the intent is to get a list of files in
> $master_dir, why not simply say:
>
> my @hashdirs = grep -f, readdir(D);
>
> That will appropriately skip ., .. and any other dirs.The statement is trying to find directories whose names match /^[0-9a-f]{2}$/ (two hexdigits) or /^pack$/.
But I do agree that listing things to skip is a fragile approach than listing things you know are safe to relink.
How about doing it this way instead?
git-relink.perl | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/git-relink.perl b/git-relink.perl index f6b4f6a..9101926 100755 --- a/git-relink.perl +++ b/git-relink.perl @@ -40,7 +40,7 @@ my $master_dir = pop @dirs; opendir(D,$master_dir . "objects/") or die "Failed to open $master_dir/objects/ : $!"; -my @hashdirs = grep !/^\.{1,2}$/, readdir(D); +my @hashdirs = grep { ($_ eq 'pack') || /^[0-9a-f]{2}$/ } readdir(D); foreach my $repo (@dirs) { $linked = 0;