git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/3] completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .git

From
Ted Pavlic <ted@tedpavlic.com>
Date
Feb 11, 2009, 17:20 UTC
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?

Show 5 quoted lines
> 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 <ted@tedpavlic.com>

   Please visit my ALS association page:
         http://web.alsa.org/goto/tedpavlic
   My family appreciates your support in the fight to defeat ALS.
Previous: Junio C HamanoNext: Shawn O. Pearce
Message 10 of 16 in “completion: Convention updates and DIRTYSTATE fix”
  1. 0/3 completion: Convention updates and DIRTYSTATE fixTed Pavlic, Feb 11, 2009
  2. 1/3 completion: For consistency, changed "git rev-parse" to __gitdir calls.Ted Pavlic, Feb 11, 2009
  3. 2/3 completion: Change "if [...]" to "if test ..." to match git conventionTed Pavlic, Feb 11, 2009
  4. 3/3 completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .gitTed Pavlic, Feb 11, 2009
  5. 4/3 completion: More fixes to prevent unbound variable errors.Ted Pavlic, Feb 11, 2009
  6. Shawn O. PearceFeb 11, 2009
  7. Shawn O. PearceFeb 11, 2009
  8. Ted PavlicFeb 11, 2009
  9. Junio C HamanoFeb 11, 2009
  10. Ted PavlicFeb 11, 2009
  11. Shawn O. PearceFeb 11, 2009
  12. Shawn O. PearceFeb 11, 2009
  13. Ted PavlicFeb 11, 2009
  14. Junio C HamanoFeb 11, 2009
  15. Junio C HamanoFeb 11, 2009
  16. Shawn O. PearceFeb 11, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.