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_DIRI 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