From: Ted Pavlic Date: Wed, 11 Feb 2009 17:20:26 GMT Subject: Re: [PATCH 3/3] completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .git Message-ID: <499308DA.9090208@tedpavlic.com> In-Reply-To: <7vprhogbfa.fsf@gitster.siamese.dyndns.org> >> This patch uses "git rev-parse --is-inside-work-tree" to determine >> whether a "--work-tree=.." should be added to the "git diff". > > Why ".."? What prevents you from "cd .git/refs/heads"? It was my impression that --work-tree=.. was relative to the GIT_DIR. My tests seem to confirm that. Within the git work tree I do: echo "test">>COPYING then cd .git/refs/heads git --work=tree=.. diff and that produces a diff of COPYING showing the new line. ("man git" confused me about how WORK_TREE was supposed to work) > Your "is-inside-work-tree" might be a good change, but if you were to > spend a letter to notify the users, "Warning: You are inside GIT_DIR! This > is something unusual, proceed with caution." is a lot more important > notice to give them than "You seem to have unstaged changes" notice. Ok, so if "is-inside-git-dir" then send a special "!" flag (and no dirtyState flags)? Does that seem reasonable? Additionally, is it a good idea to echo the branch name when inside the git dir? That is, what does it "mean" to be on "master" when you're inside .git? > You have at least three possible states: > * You are not in git repository at all; > * You are somewhere in $GIT_DIR, perhaps in a bare repository, perhaps a > repository with a work tree. > * You are inside a work tree. It seems like (psuedocode)... if git rev-parse --is-inside-git-dir; then use '!' flag to indicate caution elif git rev-parse --is-inside-work-tree; then proceed as before (with '*' and '+' flags) else do nothing I think that handles those cases. No? Thanks -- --Ted -- Ted Pavlic Please visit my ALS association page: http://web.alsa.org/goto/tedpavlic My family appreciates your support in the fight to defeat ALS.