From: Johannes Sixt Date: Fri, 16 Jan 2009 16:47:39 GMT Subject: Re: [RFC PATCH] Fix gitdir detection when in subdir of gitdir Message-ID: <4970BA2B.7090807@viscovery.net> In-Reply-To: Johannes Schindelin schrieb: > Hi, > > On Fri, 16 Jan 2009, SZEDER Gábor wrote: > >> I'm not sure about setting an absolut path instead of a relative one >> (hence the RFC), although I think it should not make any difference. >> Of course I could have count the number of chdir("..") calls and then >> construct a "../../..", but that would have been more intrusive than >> this two-liner. > > IIRC the absolute paths were shot down already... for performance reasons. > > So we try very hard to keep relative paths instead of absolute ones. This is a different matter. The question is basically: How should git behave if $PWD is inside a bare repository? And if you are inside .git/refs, than for git this looks as if it were a bare repository. The current behavior is that we chdir() up into .git, but do not set a prefix. Nor do we chdir() back where we started after the discovery. Gábor's patch needs a better justification which misbehavior it tries to fix, and the spot that it changes: if (is_git_directory(".")) { inside_git_dir = 1; if (!work_tree_env) inside_work_tree = 0; setenv(GIT_DIR_ENVIRONMENT, ".", 1); check_repository_format_gently(nongit_ok); return NULL; } needs a comment why it does what it does (and that this if-branch is only about bare repositories). -- Hannes