On Wed, Apr 12, 2017 at 01:30:31PM +0700, Duy Nguyen wrote: > On Tue, Apr 11, 2017 at 12:13 AM, Jeff King <peff@xxxxxxxx> wrote: > > On Mon, Apr 10, 2017 at 07:01:00PM +0700, Duy Nguyen wrote: > >> An alternative is, when you have found out you need to read .mailmap, > >> you call setup_work_tree() then, which prepares the worktree for you > >> (including moving back to cwd) or dies if worktree does not exist, or > >> no-op if worktree has already been asked by somebody. Many commands do > >> lazy worktree initialization this way. > > > > I think this is much more than just .mailmap, though. For instance, I > > have noticed a similar problem with .gitattributes: > > Urgh. assuming that we should not read .gitattributes if there's no > worktree to read from (similar to the "defaults to .git" situation), > how about > > - if mailmap stuff is requested, setup worktree, or die trying > - if worktree is detected, but setup code does not jump to it, do it > - if no worktree is detected, tell git-log to stop reading .gitattributes > > We probablly want some "if no wotktree then die()" in .gitattributes > and .gitignore code, just in case it's incorrectly and accidentally > executed in exotic setup I didn't check what we do with attributes when there is no worktree. The behavior you describe above sounds right. But note that in my test we _do_ have a worktree, but just look in the wrong location. So doing a chdir to $GIT_WORK_TREE would just work. -Peff