From: Stefan Näwe Date: Mon, 29 Nov 2010 13:33:39 GMT Subject: Re: [PATCH] git-gui: use --exclude-standard to check for untracked files Message-ID: In-Reply-To: <8739qxglfb.fsf@fox.patthoyts.tk> (Sorry for the late answer, I was away...) 2010/11/19 Pat Thoyts : > Stefan Naewe writes: > >>This fixes git gui failing to display untracked files if >>core.excludesfile is set to '~/.gitexcludes'. >> >>Signed-off-by: Stefan Naewe >>--- >> git-gui/git-gui.sh |    9 +-------- >> 1 files changed, 1 insertions(+), 8 deletions(-) > [..] > Using --exclude-standard is a good plan. However, as far as I can tell > this option was added for git 1.6.3. git-gui currently supports 1.5.0 or > above so rather than delete the old lines we can wrap them in a version > check and use --exclude-standard if we have it. > > Also - I assume that the problem with core.excludesfile being set as you > describe is that ~ is expanded by the shell. Here we are working in tcl > which will take the literal string. Adding [file normalize] to the > exclude value will expand the ~ to the users HOME path for us. > > The following should be cover everything and works for me: > > > From 55e5893c08a52624846dbd9b61dcbccc6bbc5e12 Mon Sep 17 00:00:00 2001 > From: Stefan Naewe > Date: Fri, 19 Nov 2010 19:28:25 +0000 > Subject: [PATCH] git-gui: use --exclude-standard to check for untracked files > > This fixes git-gui failing to display untracked files that are listed > if core.excludefiles is set to ~/.gitexcludes > > [PT: added expansion of core.excludesfile value by tcl] > > Signed-off-by: Stefan Naewe > Signed-off-by: Pat Thoyts > --- >  git-gui.sh |   18 +++++++++++------- >  1 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/git-gui.sh b/git-gui.sh > index d3acf0d..8c696c2 100755 > --- a/git-gui.sh > +++ b/git-gui.sh > @@ -1448,13 +1448,17 @@ proc rescan_stage2 {fd after} { >                close $fd >        } > > -       set ls_others [list --exclude-per-directory=.gitignore] > -       if {[have_info_exclude]} { > -               lappend ls_others "--exclude-from=[gitdir info exclude]" > -       } > -       set user_exclude [get_config core.excludesfile] > -       if {$user_exclude ne {} && [file readable $user_exclude]} { > -               lappend ls_others "--exclude-from=$user_exclude" > +       if {0 && [package vsatisfies $::_git_version 1.6.3]} { > +               set ls_others [list --exclude-standard] > +       } else { > +               set ls_others [list --exclude-per-directory=.gitignore] > +               if {[have_info_exclude]} { > +                       lappend ls_others "--exclude-from=[gitdir info exclude]" > +               } > +               set user_exclude [get_config core.excludesfile] > +               if {$user_exclude ne {} && [file readable $user_exclude]} { > +                       lappend ls_others "--exclude-from=[file normalize $user_exclude]" > +               } >        } > >        set buf_rdi {} > -- > 1.7.3.1.msysgit.0 Yes, works for me (on 1.7.3.2) Thanks, Stefan -- Stefan Naewe                      stefan dot naewe at gmail dot com Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html Plain text mails only, please      http://www.expita.com/nomime.html