Re: Git clone fails during pre-commit hook due to GIT_WORK_TREE=. (regression 2.5 -> 2.6)
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Nov 30, 2015, 19:01 UTC
- Message-ID
- <CACsJy8Ciuirgk9D_fbQ5pgo-8u1AnM+zBdKUHcz_HLfRqM9QxQ@mail.gmail.com>
- In-Reply-To
- <CACsJy8C7xoV9faGpbn_5XGt-CmCj--fgXaCFR-ngs=-pWUnrCA@mail.gmail.com>
On Wed, Nov 25, 2015 at 9:13 PM, Duy Nguyen <pclouds@gmail.com> wrote:
Show 21 quoted lines
> On Tue, Nov 24, 2015 at 6:57 PM, Stefan Beller <sbeller@google.com> wrote: >> +to Nguyễn Thái Ngọc Duy <pclouds@gmail.com> >> >> On Mon, Nov 23, 2015 at 6:22 PM, Anthony Sottile <asottile@umich.edu> wrote: >>> * Short description of the problem * >>> >>> It seems GIT_WORK_DIR is now exported invariantly when calling git >>> hooks such as pre-commit. If these hooks involve cloning repositories >>> they will not fail due to this exported environment variable. This >>> was not the case in prior versions (such as v2.5.0). > > I'm getting good at fixing one bug and adding ten more. I don't think > the cited commit is the problem. It just exposes another bug. I did > >> ~/w/git $ GIT_WORK_TREE=abc ./git clone .git /tmp/def > > and what I got was really surprising, /tmp/def contains the git > repository while the true worktree is in "abc". It does not make > sense, at least from the first sight, unless it inherits this from > git-init, where we do(?) want GIT_WORK_TREE to specify a separate > worktree. No time to dig to the bottom yet..
I was wrong, GIT_WORK_TREE support was added in git-clone many years ago in 20ccef4 (make git-clone GIT_WORK_TREE aware - 2007-07-06). So my change accidentally triggers an (undocumented) feature. We could add a hack to ignore GIT_WORK_TREE if GIT_DIR is set too, but I don't think people will like it. I don't really like reverting d95138e (setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR - 2015-06-26) because another bug reappears. So I'm out of options..
-- Duy