All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: git@vger.kernel.org
Subject: Re: [BUG] Destructive access to an "objects/info/alternates" repository
Date: Mon, 4 Jan 2021 08:54:10 -0500	[thread overview]
Message-ID: <20210104135410.myjaygaulqnxcnsc@chatter.i7.local> (raw)
In-Reply-To: <jwv1rf26k9n.fsf-monnier+gmane.comp.version-control.git@gnu.org>

On Sun, Jan 03, 2021 at 11:50:35AM -0500, Stefan Monnier wrote:
> >> FWIW, I just tried it with
> >> 
> >>     git clone --shared ~otheruser/nongnu
> >> 
> >> and got the same result.
> >> I also tried with another repository, still with the same result (tho
> >> different pack.idx names, of course).
> >
> > I've tried several times to reproduce this, but I am unable to do so. You may
> > need to provide the tarball with ~otheruser/nongnu contents for someone to be
> > able to properly debug this.
> 
> OK, you can try with the following tarball:
> 
>     https://www.iro.umontreal.ca/~monnier/nongnu.tar.gz

Great, thank you for providing that. At this point, I can verify the behaviour
you are seeing:

$ cat .git/objects/info/alternates
/tmp/test/nongnu/.git/objects
$ git gc
Enumerating objects: 119, done.
Nothing new to pack.
warning: unable to unlink '/tmp/test/nongnu/.git/objects/pack/pack-0d85e74ac2f7e51ce26f281e64eb738e8182fa95.idx': Permission denied
warning: unable to unlink '/tmp/test/nongnu/.git/objects/pack/pack-5fe14feff49ccdee5469af9dc94f6784e8464a6b.idx': Permission denied

Notably, if I run repack/prune by themselves, this does not happen:

$ git repack -Adln
Enumerating objects: 119, done.
Nothing new to pack.
$ git prune --expire=now
$

I would guess that this is happening in builtin/gc.c#686 [1], where it calls
clean_pack_garbage(). Running "git count-objects -v" shows:

$ git count-objects -v
warning: no corresponding .pack: /tmp/test/nongnu/.git/objects/pack/pack-0d85e74ac2f7e51ce26f281e64eb738e8182fa95.idx
warning: no corresponding .pack: /tmp/test/nongnu/.git/objects/pack/pack-5fe14feff49ccdee5469af9dc94f6784e8464a6b.idx
count: 0
size: 0
in-pack: 0
packs: 0
size-pack: 0
prune-packable: 0
garbage: 2
size-garbage: 6573
alternate: /tmp/test/nongnu/.git/objects

I agree with Stefan that this is undesired behaviour, even when it only
happens when attempting to clean up garbage -- git-gc (and git-count-objects)
should distinguish between garbage in the parent repository and its own
repository and not attempt any modification of the parent repository during
gc or any other operation.

[1] https://git.kernel.org/pub/scm/git/git.git/tree/builtin/gc.c#n686

-K

  reply	other threads:[~2021-01-04 13:54 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-28 18:50 [BUG] Destructive access to an "objects/info/alternates" repository Stefan Monnier
2020-12-28 19:00 ` Konstantin Ryabitsev
2020-12-28 19:29   ` Stefan Monnier
2020-12-28 20:17     ` Stefan Monnier
2020-12-29 15:44       ` Konstantin Ryabitsev
2021-01-03 16:50         ` Stefan Monnier
2021-01-04 13:54           ` Konstantin Ryabitsev [this message]
2021-01-04 20:47             ` Stefan Monnier
2021-01-04 21:20               ` Konstantin Ryabitsev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210104135410.myjaygaulqnxcnsc@chatter.i7.local \
    --to=konstantin@linuxfoundation.org \
    --cc=git@vger.kernel.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.