{"thread":{"id":"11789","subject":"[PATCH] git-relink: avoid hard linking in objects/info directory","startedAt":"2008-01-29T22:41:30Z","lastAt":"2008-01-30T16:19:22Z","messageCount":5,"participants":["Brandon Casey","Rafael Garcia-Suarez","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"66866","messageId":"479FAB9A.9040009@nrlssc.navy.mil","threadId":"11789","inReplyTo":null,"subject":"[PATCH] git-relink: avoid hard linking in objects/info directory","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2008-01-29T22:41:30Z","receivedAt":"2008-01-29T22:41:30Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"git-relink is intended to search for packs and loose objects in\ncommon between two repositories and to replace the one set with\nhard links to the other. Files other than packs and loose objects\nshould not be touched, so add the \"info\" sub-directory to the\npattern of directory excludes.\n\nSigned-off-by: Brandon Casey <casey@nrlssc.navy.mil>\n---\n git-relink.perl |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/git-relink.perl b/git-relink.perl\nindex f6b4f6a..d267404 100755\n--- a/git-relink.perl\n+++ b/git-relink.perl\n@@ -40,7 +40,7 @@ my $master_dir = pop @dirs;\n opendir(D,$master_dir . \"objects/\")\n \tor die \"Failed to open $master_dir/objects/ : $!\";\n \n-my @hashdirs = grep !/^\\.{1,2}$/, readdir(D);\n+my @hashdirs = grep !/^(\\.{1,2}|info)$/, readdir(D);\n \n foreach my $repo (@dirs) {\n \t$linked = 0;\n-- \n1.5.4.rc5.3.gb953\n"},{"id":"66903","messageId":"b77c1dce0801292334p7c348744re6a7fdbb0f17d5b3@mail.gmail.com","threadId":"11789","inReplyTo":"479FAB9A.9040009@nrlssc.navy.mil","subject":"Re: [PATCH] git-relink: avoid hard linking in objects/info directory","fromName":"Rafael Garcia-Suarez","fromEmail":"rgarciasuarez@gmail.com","sentAt":"2008-01-30T07:34:36Z","receivedAt":"2008-01-30T07:34:36Z","isPatch":true,"sender":{"key":"rgarciasuarez@gmail.com","avatar":null},"body":"On 29/01/2008, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n> git-relink is intended to search for packs and loose objects in\n> common between two repositories and to replace the one set with\n> hard links to the other. Files other than packs and loose objects\n> should not be touched, so add the \"info\" sub-directory to the\n> pattern of directory excludes.\n>\n> Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>\n> ---\n>  git-relink.perl |    2 +-\n>  1 files changed, 1 insertions(+), 1 deletions(-)\n>\n> diff --git a/git-relink.perl b/git-relink.perl\n> index f6b4f6a..d267404 100755\n> --- a/git-relink.perl\n> +++ b/git-relink.perl\n> @@ -40,7 +40,7 @@ my $master_dir = pop @dirs;\n>  opendir(D,$master_dir . \"objects/\")\n>         or die \"Failed to open $master_dir/objects/ : $!\";\n>\n> -my @hashdirs = grep !/^\\.{1,2}$/, readdir(D);\n> +my @hashdirs = grep !/^(\\.{1,2}|info)$/, readdir(D);\n\nThat looks a bit fragile. If the intent is to get a list of files in\n$master_dir, why not simply say:\n\nmy @hashdirs = grep -f, readdir(D);\n\nThat will appropriately skip ., .. and any other dirs.\n"},{"id":"66907","messageId":"7vd4rjivy5.fsf@gitster.siamese.dyndns.org","threadId":"11789","inReplyTo":"b77c1dce0801292334p7c348744re6a7fdbb0f17d5b3@mail.gmail.com","subject":"Re: [PATCH] git-relink: avoid hard linking in objects/info directory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-01-30T08:01:06Z","receivedAt":"2008-01-30T08:01:06Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Rafael Garcia-Suarez\" <rgarciasuarez@gmail.com> writes:\n\n>>  opendir(D,$master_dir . \"objects/\")\n>>         or die \"Failed to open $master_dir/objects/ : $!\";\n>>\n>> -my @hashdirs = grep !/^\\.{1,2}$/, readdir(D);\n>> +my @hashdirs = grep !/^(\\.{1,2}|info)$/, readdir(D);\n>\n> That looks a bit fragile. If the intent is to get a list of files in\n> $master_dir, why not simply say:\n>\n> my @hashdirs = grep -f, readdir(D);\n>\n> That will appropriately skip ., .. and any other dirs.\n\nThe statement is trying to find directories whose names match\n/^[0-9a-f]{2}$/ (two hexdigits) or /^pack$/.\n\nBut I do agree that listing things to skip is a fragile approach\nthan listing things you know are safe to relink.\n\nHow about doing it this way instead?\n\n git-relink.perl |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/git-relink.perl b/git-relink.perl\nindex f6b4f6a..9101926 100755\n--- a/git-relink.perl\n+++ b/git-relink.perl\n@@ -40,7 +40,7 @@ my $master_dir = pop @dirs;\n opendir(D,$master_dir . \"objects/\")\n \tor die \"Failed to open $master_dir/objects/ : $!\";\n \n-my @hashdirs = grep !/^\\.{1,2}$/, readdir(D);\n+my @hashdirs = grep { ($_ eq 'pack') || /^[0-9a-f]{2}$/ } readdir(D);\n \n foreach my $repo (@dirs) {\n \t$linked = 0;\n"},{"id":"66908","messageId":"b77c1dce0801300008r7c6c38f5i97ffd30d022d533b@mail.gmail.com","threadId":"11789","inReplyTo":"7vd4rjivy5.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] git-relink: avoid hard linking in objects/info directory","fromName":"Rafael Garcia-Suarez","fromEmail":"rgarciasuarez@gmail.com","sentAt":"2008-01-30T08:08:52Z","receivedAt":"2008-01-30T08:08:52Z","isPatch":true,"sender":{"key":"rgarciasuarez@gmail.com","avatar":null},"body":"On 30/01/2008, Junio C Hamano <gitster@pobox.com> wrote:\n> The statement is trying to find directories whose names match\n> /^[0-9a-f]{2}$/ (two hexdigits) or /^pack$/.\n\nAh, I see better now.\n\n> But I do agree that listing things to skip is a fragile approach\n> than listing things you know are safe to relink.\n>\n> How about doing it this way instead?\n>\n>  git-relink.perl |    2 +-\n>  1 files changed, 1 insertions(+), 1 deletions(-)\n>\n> diff --git a/git-relink.perl b/git-relink.perl\n> index f6b4f6a..9101926 100755\n> --- a/git-relink.perl\n> +++ b/git-relink.perl\n> @@ -40,7 +40,7 @@ my $master_dir = pop @dirs;\n>  opendir(D,$master_dir . \"objects/\")\n>         or die \"Failed to open $master_dir/objects/ : $!\";\n>\n> -my @hashdirs = grep !/^\\.{1,2}$/, readdir(D);\n> +my @hashdirs = grep { ($_ eq 'pack') || /^[0-9a-f]{2}$/ } readdir(D);\n\nFine, except that one can factorize one step further:\n    grep /^(pack|[0-9a-f]{2})$/, readdir(D);\n"},{"id":"66917","messageId":"47A0A38A.7050600@nrlssc.navy.mil","threadId":"11789","inReplyTo":"b77c1dce0801300008r7c6c38f5i97ffd30d022d533b@mail.gmail.com","subject":"Re: [PATCH] git-relink: avoid hard linking in objects/info directory","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2008-01-30T16:19:22Z","receivedAt":"2008-01-30T16:19:22Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"Rafael Garcia-Suarez wrote:\n> On 30/01/2008, Junio C Hamano <gitster@pobox.com> wrote:\n>> The statement is trying to find directories whose names match\n>> /^[0-9a-f]{2}$/ (two hexdigits) or /^pack$/.\n> \n> Ah, I see better now.\n> \n>> But I do agree that listing things to skip is a fragile approach\n>> than listing things you know are safe to relink.\n>>\n>> How about doing it this way instead?\n>>\n>>  git-relink.perl |    2 +-\n>>  1 files changed, 1 insertions(+), 1 deletions(-)\n>>\n>> diff --git a/git-relink.perl b/git-relink.perl\n>> index f6b4f6a..9101926 100755\n>> --- a/git-relink.perl\n>> +++ b/git-relink.perl\n>> @@ -40,7 +40,7 @@ my $master_dir = pop @dirs;\n>>  opendir(D,$master_dir . \"objects/\")\n>>         or die \"Failed to open $master_dir/objects/ : $!\";\n>>\n>> -my @hashdirs = grep !/^\\.{1,2}$/, readdir(D);\n>> +my @hashdirs = grep { ($_ eq 'pack') || /^[0-9a-f]{2}$/ } readdir(D);\n> \n> Fine, except that one can factorize one step further:\n>     grep /^(pack|[0-9a-f]{2})$/, readdir(D);\n\nLooks fine to me.\n\n-brandon\n"}]}