Thread (13 messages) flat view 13 messages, 3 authors, 2016-06-15

Re: [long] worktree setup cases

From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:49:50

On Thu, Oct 21, 2010 at 10:30 AM, Jonathan Nieder [off-list ref] wrote:
Nguyen Thai Ngoc Duy wrote:
quoted
On Thu, Oct 21, 2010 at 2:07 AM, Jonathan Nieder [off-list ref] wrote:
quoted
quoted
 - otherwise, if original cwd was under repository,
[...]
quoted
quoted
             GIT_WORK_TREE defaults to unset.
What do you mean by "under repository"? If the repo is /tmp/git/.git,
then cwd is at /tmp/git/.git?
I meant if the original cwd lies within the repository.

Example:

 repo           /tmp/git/.git
 starting cwd   /tmp/git/.git/objects/pack
OK it's considered a bare repo, so no worktree.
quoted
quoted
D. User-supplied relative paths.

 - path in .git file is relative to containing directory
 - path in GIT_DIR is relative to original cwd
 - paths in GIT_WORK_TREE and core.worktree are relative to
  $GIT_DIR
I think $GIT_WORK_TREE is relative to original cwd.
git.txt is confusing, then.  Actually it has some other insights:

 --work-tree=<path>
       Set the path to the working tree. The value
       will not be used in combination with
       repositories found automatically in a .git
       directory (i.e. $GIT_DIR is not set).

So GIT_WORK_TREE should be discarded or warned about when GIT_DIR is
not set. (?)
Yeah. Junio reminded me in another mail. It should warn (at least, me).
       This can also be controlled by setting the
       GIT_WORK_TREE environment variable and the
       core.worktree configuration variable. It can be
       an absolute path or relative path to the
       directory specified by --git-dir or GIT_DIR.

This is where I got the impression about relative paths.
Hmm.. OK then. So worktree can be relative to gitdir, which in turn
can be relative to original cwd. Fun.
       Note: If --git-dir or GIT_DIR are specified but
       none of --work-tree, GIT_WORK_TREE and
       core.worktree is specified, the current working
       directory is regarded as the top directory of
       your working tree.

Nice to see this case is documented.
quoted
Yes, core.worktree
should be relative to $GIT_DIR.
Speaking of which, it is not clear to me that core.worktree should
fall under the forbidden case discussed above.  If it does, what is
the point of making it configurable?
I was not the one who introduced core.worktree, so I can't really
tell. Maybe less keystrokes? You know, "GIT_DIR=foo.git git foo" is
shorter than "GIT_DIR=foo.git GIT_WORK_TREE=/path/to/somewhere git
foo". I tend to think that core.worktree is always effective
regardless $GIT_DIR env setting. But I was wrong.

Also the "relative to $GIT_DIR" may be confusing. If $GIT_DIR points
to a file that points to a true repo, then to which one it is
relative?
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help