Subject: Re: [RFC] GIT_WORK_TREE

From: Matthias Lederhofer <[email-masked]>
Date: Sun, 3 Jun 2007 21:32:03 +0200

Sergio <[email-masked]> wrote:
> Matthias Lederhofer <matled <at> gmx.net> writes:
> If I am not wrong, with this we detach the WT from the REPO by letting git know
> our working tree if the working tree does not include a repo (.git) directory.
> And this is done either:
> - by setting the GIT_WORK_TREE environment variable whenever needed
> - by passing the --work-tree parameter to git when needed
> - by setting the core.worktree config option in the git repo, so that the
> repository knows where its default work tree is...
> 
> Is this correct? or am I missing some other ways?

That's right, you'd set GIT_DIR and core.worktree/GIT_WORK_TREE.

> Would it make sense to make the _WT_ know where its repo is?
>
> I.e. having something like a .git-repo file a the top dir of a WT, so that when
> git is invoked within the WT it can scan up the WT until it finds the .git-repo
> file and automatically decide that GIT_WORK_TREE is at the dir containing that
> .git-repo file and that GIT_DIR is at the file pointed by that .git-repo?

Symlinking the .git directory is quite similar to this and works
already without this patch series.  Anyway I spontaneously can think
of the following use cases, so it might be interesting to add this
feature:
- The use case Nguyen mentioned, e.g. the filesystem does not support
  symlinks and for some reason it is not possible to use the git
  repository next to the working tree.
- When executing potentially 'dangerous' programs in the working tree
  it is safer to have a file pointing to the repository than placing
  the repository or a symlink to the repository in the working tree
  (breaking the .git-repo file might be confusing but is not as bad as
  breaking the repository).
- In case of a publicly available working tree it might be ok to
  publish the path to the repository accidentially (which might happen
  if the permissions for the .git-repo file are too loose) but there
  would be no risk that wrong permissions could disclose the
  repository itself.

What I haven't thought through is if it could make sense to honor the
GIT_WORK_TREE/core.worktree setting when such a .git-repo file is used
or just use the directory containing the file as work tree.