On Mon, Apr 04, 2011 at 10:14:12PM -0400, Martin von Zweigbergk wrote: > The "highlight this only" and "highlight this too" commands in gitk > add the path relative to $GIT_WORK_TREE to the "Find" input box. When > the search (using git-diff-tree) is run, the paths are used > unmodified, except for some shell escaping. Since the search is run > from gitk's working directory, no commits matching the paths will be > found if gitk was started in a subdirectory. > > Make the paths passed to git-diff-tree relative to gitk's working > directory instead of being relative to $GIT_WORK_TREE. If, however, > gitk is run outside of the working directory (e.g. with $GIT_WORK_TREE > set), we still need to use the path relative to $GIT_WORK_TREE. > > Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@xxxxxxxxx> > --- > > This could also have been fixed by cd-ing to the work tree > directory. That would also make the "Local changes checked in to index > but not committed" and "Local uncommitted changes, not checked in to > index" show up properly when running with GIT_WORK_TREE defined. > > I wasn't sure if other parts of gitk depend on the working directory, > or if there are plans to make something depend on it, so I thought > changing it only for the specific case of file highlighting would be > safer. What do you think? I have to admit I wasn't aware of GIT_WORK_TREE before I saw your patches. The patches look OK, but I wonder how many of the problems would go away if gitk were simply to set GIT_WORK_TREE in the environment for the programs it runs, if it is not already set. Something like this (untested): # check that we can find a .git directory somewhere... if {[catch {set gitdir [gitdir]}]} { show_error {} . [mc "Cannot find a git repository here."] exit 1 } if {![file isdirectory $gitdir]} { show_error {} . [mc "Cannot find the git directory \"%s\"." $gitdir] exit 1 } +if {![info exists env(GIT_WORK_TREE)]} { + set worktree [file dirname $gitdir] + if {$worktree ne "."} { + set env(GIT_WORK_TREE) $worktree + } +} Paul. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html