# [PATCH] git-gui: fix browser with initial path

4 messages from 2010-11-23 to 2011-01-28. Participants: Bert Wesarg, Pat Thoyts.
Thread: https://gitlist.dev/t/25815

## Bert Wesarg, 2010-11-23 07:37

Subject: [PATCH] git-gui: fix browser with initial path
Message-ID: <1290497870-28673-1-git-send-email-bert.wesarg@googlemail.com>
URL: https://gitlist.dev/e/1290497870-28673-1-git-send-email-bert.wesarg%40googlemail.com

```
The path given to the browser does not end in a slash, which results in bad
path given to blame and broke [Up To Parent]. Also the path was not
escaped before displaying.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>

---
 git-gui/lib/browser.tcl |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/git-gui/lib/browser.tcl b/git-gui/lib/browser.tcl
index c241572..a88a68b 100644
--- a/git-gui/lib/browser.tcl
+++ b/git-gui/lib/browser.tcl
@@ -26,8 +26,14 @@ constructor new {commit {path {}}} {
 	wm withdraw $top
 	wm title $top [append "[appname] ([reponame]): " [mc "File Browser"]]
 
+	if {$path ne {}} {
+		if {[string index $path end] ne {/}} {
+			append path /
+		}
+	}
+
 	set browser_commit $commit
-	set browser_path $browser_commit:$path
+	set browser_path "$browser_commit:[escape_path $path]"
 
 	${NS}::label $w.path \
 		-textvariable @browser_path \
-- 
tg: (6f10c41..) bw/git-gui/fix-browser-up (depends on: master)

```

## Bert Wesarg, 2010-12-10 08:48

Subject: Re: [PATCH] git-gui: fix browser with initial path
Message-ID: <AANLkTim8BhN9czr6Jx5J28iNop4XdFDcNKbbjxddW9-i@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTim8BhN9czr6Jx5J28iNop4XdFDcNKbbjxddW9-i%40mail.gmail.com
In-Reply-To: <1290497870-28673-1-git-send-email-bert.wesarg@googlemail.com>

```
Ping.

On Tue, Nov 23, 2010 at 08:37, Bert Wesarg <bert.wesarg@googlemail.com> wrote:
> The path given to the browser does not end in a slash, which results in bad
> path given to blame and broke [Up To Parent]. Also the path was not
> escaped before displaying.
>
> Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
>
> ---
>  git-gui/lib/browser.tcl |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/git-gui/lib/browser.tcl b/git-gui/lib/browser.tcl
> index c241572..a88a68b 100644
> --- a/git-gui/lib/browser.tcl
> +++ b/git-gui/lib/browser.tcl
> @@ -26,8 +26,14 @@ constructor new {commit {path {}}} {
>        wm withdraw $top
>        wm title $top [append "[appname] ([reponame]): " [mc "File Browser"]]
>
> +       if {$path ne {}} {
> +               if {[string index $path end] ne {/}} {
> +                       append path /
> +               }
> +       }
> +
>        set browser_commit $commit
> -       set browser_path $browser_commit:$path
> +       set browser_path "$browser_commit:[escape_path $path]"
>
>        ${NS}::label $w.path \
>                -textvariable @browser_path \
> --
> tg: (6f10c41..) bw/git-gui/fix-browser-up (depends on: master)
>

```

## Pat Thoyts, 2011-01-28 10:42

Subject: Re: [PATCH] git-gui: fix browser with initial path
Message-ID: <87sjwdmhrs.fsf@fox.patthoyts.tk>
URL: https://gitlist.dev/e/87sjwdmhrs.fsf%40fox.patthoyts.tk
In-Reply-To: <AANLkTim8BhN9czr6Jx5J28iNop4XdFDcNKbbjxddW9-i@mail.gmail.com>

```
Bert Wesarg <bert.wesarg@googlemail.com> writes:

>Ping.
>
>On Tue, Nov 23, 2010 at 08:37, Bert Wesarg <bert.wesarg@googlemail.com> wrote:
>> The path given to the browser does not end in a slash, which results in bad
>> path given to blame and broke [Up To Parent]. Also the path was not
>> escaped before displaying.
>>
>> Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
>>
>> ---
>>  git-gui/lib/browser.tcl |    8 +++++++-
>>  1 files changed, 7 insertions(+), 1 deletions(-)
>>
>> diff --git a/git-gui/lib/browser.tcl b/git-gui/lib/browser.tcl
>> index c241572..a88a68b 100644
>> --- a/git-gui/lib/browser.tcl
>> +++ b/git-gui/lib/browser.tcl
>> @@ -26,8 +26,14 @@ constructor new {commit {path {}}} {
>>        wm withdraw $top
>>        wm title $top [append "[appname] ([reponame]): " [mc "File Browser"]]
>>
>> +       if {$path ne {}} {
>> +               if {[string index $path end] ne {/}} {
>> +                       append path /
>> +               }
>> +       }
>> +
>>        set browser_commit $commit
>> -       set browser_path $browser_commit:$path
>> +       set browser_path "$browser_commit:[escape_path $path]"
>>
>>        ${NS}::label $w.path \
>>                -textvariable @browser_path \
>> --
>> tg: (6f10c41..) bw/git-gui/fix-browser-up (depends on: master)
>>
>
The commit comment for this doesn't really reflect whats being
done. Commit 1ab8628 fixed the [Up To Parent] problem and this just
fixes the display on the browser title.

So I plan to take this with the commit comment as:

 git-gui: fix display of path in browser title

 Ensure the browser path is shown on the title with a / suffix and escape
 any backslashes or newlines in path elements before display.

 Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>

-- 
Pat Thoyts                            http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97  10 CE 11 E6 04 E0 B9 DD

```

## Bert Wesarg, 2011-01-28 11:04

Subject: Re: [PATCH] git-gui: fix browser with initial path
Message-ID: <AANLkTi=9vwg9mvvyWax0jr1OmAr+JUn7TNt98=9MxR6G@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTi%3D9vwg9mvvyWax0jr1OmAr%2BJUn7TNt98%3D9MxR6G%40mail.gmail.com
In-Reply-To: <87sjwdmhrs.fsf@fox.patthoyts.tk>

```
On Fri, Jan 28, 2011 at 11:42, Pat Thoyts
<patthoyts@users.sourceforge.net> wrote:
> The commit comment for this doesn't really reflect whats being
> done. Commit 1ab8628 fixed the [Up To Parent] problem and this just
> fixes the display on the browser title.
>
> So I plan to take this with the commit comment as:
>
>  git-gui: fix display of path in browser title
>
>  Ensure the browser path is shown on the title with a / suffix and escape
>  any backslashes or newlines in path elements before display.

No, the main problem is, that the path does not end in a slash, but
the browser code expect this, ie. it build sub pathes by just
concatenating '$path' and '$file', or with '$dir/', without a slash
inbetween. Its not only the visual part. Try this without the patch
(int git.git):

git gui browse git-gui/

In the path line there should be now 'master:git-gui'. Than go into
'lib'. You have 'master:git-guilib/'. And than double click about.tcl,
The blame view will get the 'git-guilib/about.tcl'.

Because the browser is itself consistent in this behavior, the only
problem was when the browser was a path given to start with. And this
path needs have a trailing slash. And this patch ensures this.

Bert

>
>  Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
>
> --
> Pat Thoyts                            http://www.patthoyts.tk/
> PGP fingerprint 2C 6E 98 07 2C 59 C8 97  10 CE 11 E6 04 E0 B9 DD
>
>

```
