Thread (235 messages) flat view 235 messages, 5 authors, 2021-09-02

Re: [PATCH v4 00/25] multi-pack reachability bitmaps

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2021-08-25 07:48:11

On Wed, 2021-08-25 at 03:36 -0400, Jeff King wrote:
On Tue, Aug 24, 2021 at 10:10:12PM -0400, Taylor Blau wrote:
quoted
quoted
It's not clear to me that we have a resolution on whether calling "cd ..
&& git multi-pack-index write --object-dir repo.git" is supposed to
work.
My recommendation would be to do the following things, all in a reroll
of this series:

  - Fix the bug by which we would delete a .rev or .bitmap file out of a
    different object store than we were working in (when the caller
    passes `--object-dir`).
That was what my patch did, afaict.
quoted
  - Disallow running `git multi-pack-index` outside of a Git repository.

  - Restrict `--object-dir` to only work with alternates of the
    repository in the current working directory.

To me, that seems like both the least-surprising behavior, and what
would lend itself to the easiest implementation. I would probably argue
that the existing behavior (where `--object-dir` would work against
arbitrary repositories) is a bug, and shouldn't continue to be
supported.
All of those seem reasonable to me, and are what I would suggest if we
were starting from scratch. My only hesitation is whether people are
using the weird behavior of --object-dir in the wild (e.g., are bup
folks relying on it).

Johannes, is this something you're using _now_, and it works, or
something you hoped to use in the future?
I was "hoping" to use

	git multi-pack-index --object-dir=... write

but never

	$ git multi-pack-index write --object-dir=...

which almost seems like it really is more like

	$ git -C ... multi-pack-index write

anyway, because you specify a repo? At least per the above example, I
never tried.


As I started playing with that again (I had done before, and it worked)
I noticed the segfault, hence my previous patch.


However, what I was thinking of doing is more outlined in this thread:
https://lore.kernel.org/git/20210820195558.44275-1-johannes@sipsolutions.net/ (local)


And essentially, as I described later in
https://lore.kernel.org/git/dbb24573efc3dd945acd8acdfd9fe627ad7cbcd2.camel@sipsolutions.net/ (local)

I have two only vaguely overlapping use cases.

One of them doesn't need "--object-dir", and the other requires that
[RFC PATCH] to be applied as well, which would basically let me use only
the small subset of git that is "git multi-pack-index" as machinery to
*just* do indexing, *without* really ever having a real "repository"
that git could otherwise operate on and worry about the actual objects
etc.

I might resend that with the code style issues fixed, but the objects
seemed more fundamental.
But what I'm wondering is whether using --object-dir from outside a repo
entirely is actually something that even works. I.e., would we be
disabling a behavior that was not intended, but does happen to work? Or
are we closing off a possibly buggy and half-working part of the system?
Well, it does work now, modulo the segfault, but that is actually a very
recent addition, I'd tried this before :)

johannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help