From: Nguyen Thai Ngoc Duy Date: Thu, 21 Oct 2010 12:50:30 GMT Subject: Re: [long] worktree setup cases Message-ID: In-Reply-To: <20101021033042.GA1891@burratino> On Thu, Oct 21, 2010 at 10:30 AM, Jonathan Nieder wrote: > Nguyen Thai Ngoc Duy wrote: >> On Thu, Oct 21, 2010 at 2:07 AM, Jonathan Nieder wrote: > >>>  - otherwise, if original cwd was under repository, > [...] >>>              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. >>> 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= >        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. > >> 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