Re: fixing workdirs

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: fixing workdirs

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:06

Pierre Habouzit [off-list ref] writes:
On Thu, Jul 08, 2010 at 12:40:11PM -0700, Junio C Hamano wrote:
quoted
Pierre Habouzit [off-list ref] writes:
quoted
for the first one, the fix is simple: workdirs have now a name, and
their HEAD reflog lives in the "master" git repository reflog namespace
under logs/workdir/$workdir_name/HEAD. The workdir HEAD reflog is then a
symlink to the masters.
I think this is a sane thing to do, except for the "symlink" part but that
would be just a minor implementation detail.
What would you suggest instead of the symlink then ? (knowing that all
the workdir is just a full symlink farm at them moment).
I can imagine that we may want to have a general mechanism to help an
object store that belongs to one "primary" repository be aware of ref-like
things that live outside of the repoistory itself, and not just a special
purpose hack suitable only to handle the workdirs.  E.g., we have talked
about a "fork" created by "clone -s" wanting the forkee repository to be
aware of its refs, so that rewinding the refs in the forkee repository and
then running gc there won't remove the objects now unnecessary in the
forkee but still needed by the forker repository.

It shouldn't be hard to do something similar to "gitdir: " support for
this without using a symlink, no?

Re: fixing workdirs

From: Pierre Habouzit <hidden>
Date: 2016-06-15 22:49:09

On Fri, Jul 09, 2010 at 03:25:15PM -0700, Junio C Hamano wrote:
Pierre Habouzit [off-list ref] writes:
quoted
On Thu, Jul 08, 2010 at 12:40:11PM -0700, Junio C Hamano wrote:
quoted
Pierre Habouzit [off-list ref] writes:
quoted
for the first one, the fix is simple: workdirs have now a name, and
their HEAD reflog lives in the "master" git repository reflog namespace
under logs/workdir/$workdir_name/HEAD. The workdir HEAD reflog is then a
symlink to the masters.
I think this is a sane thing to do, except for the "symlink" part but that
would be just a minor implementation detail.
What would you suggest instead of the symlink then ? (knowing that all
the workdir is just a full symlink farm at them moment).
I can imagine that we may want to have a general mechanism to help an
object store that belongs to one "primary" repository be aware of ref-like
things that live outside of the repoistory itself, and not just a special
purpose hack suitable only to handle the workdirs.  E.g., we have talked
about a "fork" created by "clone -s" wanting the forkee repository to be
aware of its refs, so that rewinding the refs in the forkee repository and
then running gc there won't remove the objects now unnecessary in the
forkee but still needed by the forker repository.

It shouldn't be hard to do something similar to "gitdir: " support for
this without using a symlink, no?
Sorry for the delay, I was on vacation.

Okay, I see, this makes sense. I'll see what I can do on this path,
though it's probably harder than simply extending gitfiles. We still
want a .git/ directory as we want most of the top level stuff to be
local to each repository (HEAD, ORIG_HEAD, ...) but not:

  - subdirectories (most of them being references, logs, ...)
  - the lock (which is kind of the weak point in my proposal atm, yours
    is nicer)
  - config (or do we want a cascading semantics: local workdir config,
    master repository config, user .gitconfig, /etc/.... ? I think not
    but ...)
  - packed-refs

Plus, to make everything work, the reflogs of a given "workdir" (or
shared clone) must be put in a different namespace to avoid clashes.
Though this is probably the simplest bit.

All in all, I'm afraid to have to look at every single git script that
for now writes without thinking twice under .git/ :/
-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help