From: Nguyen Thai Ngoc Duy Date: Mon, 25 Oct 2010 00:04:00 GMT Subject: Re: [WIP PATCH 01/18] rev-parse: add --internal-cwd and --internal-git-dir for tests Message-ID: In-Reply-To: <20101024154005.GB31764@burratino> 2010/10/24 Jonathan Nieder : > Nguyễn Thái Ngọc Duy wrote: > >> --internal-cwd is obvious, no way else to expose it for testing. >> >> --internal-git-dir is introduced because --git-dir prepares its output >> suitable for scripting. For tests, it must be exactly what git stores. > > Hmm.  Forget this is used in tests, would it make sense to do this > with trace_printf, at the end of setup, as in your earlier patch? trace_printf surely does. But "the end of setup" is unclear. As of now, setup ends when setup_* function _and_ setup_git_env() are called. There are cases that setup_* finishes without calling setup_git_env(), or setup_git_env() is called way before setup_* is finished. > I think it might: just like the exec: lines provide context about what > command is being traced, such trace: cwd: lines would make it clearer > what paths that are being output might be referring to. Also prefix them all with "setup:", something like setup: git_dir: ../.git setup: work_tree: /my/git/worktree setup: cwd: /my/git/worktree setup: prefix: sub/ would be easy to be grepped from GIT_TRACE, to read and to test_cmp. > Returning to the topic of tests, is it possible to get at these > variables using an external command that is run by git?  pre-commit > hook, maybe.  Testing of other symptoms is also possible, as in > Frédéric's example. Why do hooks need these? git_dir, prefix are already accessible via --git-dir, --show-prefix, --show-toplevel. Current cwd can be determined with --is-inside-work-tree: if it returns true, current cwd is worktree root, otherwise it is original cwd. -- Duy