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

Re: Git commit path vs rebase path

From
Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Date
May 10, 2012, 18:10 UTC
Message-ID
<4FAC047A.4010001@ramsay1.demon.co.uk>
In-Reply-To
<CAAXzdLVj0szCgpdOSdhnLdkBKAM+e6vrQpvrsz4HeUo+Nh1K6A@mail.gmail.com>
Steven Penny wrote:
Show 39 quoted lines
> Junio C Hamano wrote:
>> Actually, the above is stated rather poorly.  The path that ends up in
>> $file must be usable by both Windows native and Cygwin programs, as the
>> user may be using "vi" from Cygwin, or "notepad" like your example.
> 
> Excellent point.
> 
> I ran some test and this is what I came up with
> 
> # VI
> /cygdrive/c/test/hello.sh # works
> C:\test\hello.sh # works
> C:/test/hello/sh # works
> 
> # NOTEPAD
> /cygdrive/c/test/hello.sh # does not work
> C:\test\hello.sh # works
> C:/test/hello.sh # works
> 
> so the best compromise would be "C:/test/hello.sh" which can be created with
> 
> diff --git a/git-sh-setup.sh b/git-sh-setup.sh
> index 7b3ae75..ba198d2 100644
> --- a/git-sh-setup.sh
> +++ b/git-sh-setup.sh
> @@ -260,6 +260,11 @@ case $(uname -s) in
>  		return 1
>  	}
>  	;;
> +*CYGWIN*)
> +    pwd () {
> +        builtin cygpath -m
> +    }
> +    ;;
>  *)
>  	is_absolute_path () {
>  		case "$1" in
> 
> http://github.com/svnpenn/git/commit/692bc
I would rather define a script; it can then be used independently of git.

Personally, I don't have this specific problem because I use (the cygwin version of) vim. (does anybody actually use notepad?)

I mostly, but not exclusively, use cygwin tools on cygwin. For example I use win32 versions of doxygen, ghostscript, tex (MikTex 2.7), graphviz etc. However, the makefiles which drive those tools use relative paths ...

In fact the only problem I have encountered is with firefox, which I resolved by hacking up a script. Indeed I have already posted to the list on this issue before (back in January 2009) and, to save you the effort of trawling the archives, I append that mail below.

HTH

ATB, Ramsay Jones

-- >8 --
Date: Sat, 24 Jan 2009 18:51:23 +0000
From: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
To: =?ISO-8859-1?Q?Bj=F6rn_Steinbrink?= <B.Steinbrink@gmx.de>
CC: Junio C Hamano <gitster@pobox.com>,  jaeckel@stzedn.de, 
 git@vger.kernel.org
Subject: Re: [PATCH] cygwin: Convert paths for html help from posix to windows
Björn Steinbrink wrote:
Show 17 quoted lines
> When using "git help --web" with cygwin, we used to pass the posix path
> to the browser, but a native windows browser will expect a windows path
> and is unable to make use of the given path.
> 
> So the cygwin port gets its own open_html implementation that handles
> the path conversion.
> 
> Reported-by: Steffen Jaeckel <jaeckel@stzedn.de>
> Tested-by: Steffen Jaeckel <jaeckel@stzedn.de>
> 
> Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
> ---
> OK, I don't really know if this is the right way to do it. Maybe when
> the browser was built for cygwin this breaks? I have no clue, it's
> admittedly just the result of a quick glance at the code and some
> googling to find the "right" cygwin function... :-/
> 
Hi Björn,

I had the same problem. However, rather than modifying git, I created a firefox wrapper script (in ~/bin) which used the cygpath command line tool to do the path conversion. Also, if you use "git instaweb", you also need to filter out http URLs and pass them through un-molested by cygpath (it turns http://localhost into http:\localhost).

My script is clearly a "quick hack" just to get something working for me, but you may find it useful as a starting point for your own ("proper" ;-) script, so I've included it below.

HTH, Ramsay Jones

-->8-- #!/bin/sh #

while test $# != 0
do
    case "$1" in
	-version)
	    echo "firefox 1.5.0.2"
	    exit 0
	    ;;
	-new-tab)
	    echo "-new-tab not supported"
	    exit 1
	    ;;
	--)
	    shift
	    break
	    ;;
	-*)
	    echo "option '$1' not supported"
	    exit 1
	    ;;
	*)
	    break
	    ;;
    esac
    shift
done
if test "$1" = ""
then
	p=
else
	case "$1" in
	    http*)
		p="$1"
		;;
	    *)
		p="$(cygpath -w "$1")"
		;;
	esac
fi
"/cygdrive/c/Program Files/Mozilla Firefox/firefox.exe" "$p"
exit 0
-- 8< --
Previous: Steven PennyNext: Steven Penny
Message 12 of 32 in “Git commit path vs rebase path”
  1. Steven PennyMay 6, 2012
  2. Junio C HamanoMay 7, 2012
  3. Johannes SixtMay 8, 2012
  4. Steven PennyMay 8, 2012
  5. Johannes SixtMay 8, 2012
  6. Steven PennyMay 8, 2012
  7. Junio C HamanoMay 8, 2012
  8. Junio C HamanoMay 8, 2012
  9. Steven PennyMay 8, 2012
  10. Junio C HamanoMay 9, 2012
  11. Steven PennyMay 9, 2012
  12. Ramsay JonesMay 10, 2012
  13. Steven PennyMay 11, 2012
  14. Ramsay JonesMay 13, 2012
  15. Steven PennyMay 13, 2012
  16. Johannes SixtMay 14, 2012
  17. Ramsay JonesMay 15, 2012
  18. Johannes SixtMay 16, 2012
  19. Ramsay JonesMay 17, 2012
  20. Junio C HamanoMay 17, 2012
  21. 0/2 Re: Git commit path vs rebase pathJunio C Hamano, May 16, 2012
  22. 1/2 git-sh-setup: define workaround wrappers before they are usedJunio C Hamano, May 16, 2012
  23. Ramsay JonesMay 17, 2012
  24. 2/2 git-sh-setup: work around Cygwin path handling gotchasJunio C Hamano, May 16, 2012
  25. Steven PennyMay 16, 2012
  26. Junio C HamanoMay 16, 2012
  27. Ramsay JonesMay 17, 2012
  28. Junio C HamanoMay 18, 2012
  29. Steven PennyMay 19, 2012
  30. Ramsay JonesMay 21, 2012
  31. Junio C HamanoMay 21, 2012
  32. Ramsay JonesMay 24, 2012

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.