git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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;
Previous: Rafael Garcia-SuarezNext: Rafael Garcia-Suarez
Message 3 of 5 in “git-relink: avoid hard linking in objects/info directory”
  1. git-relink: avoid hard linking in objects/info directoryBrandon Casey, Jan 29, 2008
  2. Rafael Garcia-SuarezJan 30, 2008
  3. Junio C HamanoJan 30, 2008
  4. Rafael Garcia-SuarezJan 30, 2008
  5. Brandon CaseyJan 30, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.