Re: [PATCH] git-init: set core.workdir when GIT_WORK_DIR is specified
- From
- Matthias Lederhofer <matled@gmx.net>
- Date
- Mar 18, 2007, 11:18 UTC
- Message-ID
- <20070318111800.GA15147@moooo.ath.cx>
- In-Reply-To
- <7vr6rnlyzt.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
Show 19 quoted lines
> Matthias Lederhofer <matled@gmx.net> writes: > > * git init does not show the expansion of GIT_WORK_TREE to an > > absolute path, this might confuse the user > > If the feature might confuse the user without extra output, it > probably is confusing to begin with, with or without it, so one > option might be to refuse relative path when running git-init. > > However, as long as the expansion to absolute path is done > correctly, I do not think there is any room for confusion. Who > would want a feature that lets you set work-tree to ../.., so > that no matter where in the working tree you cd around, git > assumes that the toplevel is two level up? If you record the > work tree location in the configuration, you would want it to be > stable, and I do not think anybody would expect it be stored as > relative. So I thought having the printf() would be a good way > for debugging the absolute expansion, but after that I do not > think it is needed (but again, I may well be missing some issues > you've thought about, so please tell me otherwise).
I really don't know what people would expect from git --work-tree=foo init and therefore I thought it might help to tell them "core.worktree = /path/to/foo". For example one could think this would work (without the message in brackets):
~/foo$ export GIT_DIR=`pwd`/repository.git
~/foo$ mkdir src
~/foo$ git --work-tree=src init
[core.worktree = /home/user/foo/src]
Initialized empty Git repository in /home/user/foo/repository.git/
~/foo$ cd ..; mv foo bar; cd bar
~/bar$ export GIT_DIR=`pwd`/repository.gitWith the message in brackets it would be clear what breaks after renaming the directory.
Note: git config core.worktree ../src fails after moving the working tree because the value of core.worktree checked for validity. Either run
$ git --work-tree=. config [args]
or just do
$ git --work-tree=src init
again in the new location and git-init will set core.worktree again.