Compare commits

...

3 Commits

Author SHA1 Message Date
95dcfa3633 git-gui: Vertically align textboxes with labels
In git-gui after clicking either on 'Create New Repository' or
'Open Existing Repository' the form elements aren't centered like
they are pretty much everywhere else in the app. At least when ran
on a mac, haven't checked on other platforms.

Using grid instead of pack seems to fix this.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-05-26 21:05:20 -04:00
7f83aa2d3d git-gui: Handle workdir detection when CYGWIN=nowinsymlinks
If the user has put nowinsymlinks into their CYGWIN environment
variable any symlinks created by a Cygwin process (e.g. ln -s)
will not have the ".lnk" suffix.  In this case workdir is still
a workdir, but our detection of looking for "info.lnk" fails
as the symlink is actually a normal file called "info".

Instead we just always use Cygwin's test executable to see if
info/exclude is a file.  If it is, we assume from there on it
can be read by git-ls-files --others and is thus safe to use
on the command line.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-05-22 08:34:00 -04:00
16dd62ac4d git-gui: Add a --trace command line option
Often new Git users want to know what commands git-gui uses to make
changes, so they can learn the command line interface by mimicking
what git-gui does in response to GUI actions.  Showing the direct
commands being executed is easy enough to implement but this is of
little value to end-users because git-gui frequently directly calls
plumbing, not porcelain.

Since the code is already written and tested, its fairly harmless
to include.  It may not help a new end-user, but it can help with
debugging git-gui or reverse-engineering its logic to further make
changes to it or implement another GUI for Git.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-05-20 15:44:46 -04:00
2 changed files with 48 additions and 30 deletions

View File

@ -122,6 +122,14 @@ set _reponame {}
set _iscygwin {}
set _search_path {}
set _trace [lsearch -exact $argv --trace]
if {$_trace >= 0} {
set argv [lreplace $argv $_trace $_trace]
set _trace 1
} else {
set _trace 0
}
proc appname {} {
global _appname
return $_appname
@ -245,6 +253,21 @@ proc get_config {name} {
##
## handy utils
proc _trace_exec {cmd} {
if {!$::_trace} return
set d {}
foreach v $cmd {
if {$d ne {}} {
append d { }
}
if {[regexp {[ \t\r\n'"$?*]} $v]} {
set v [sq $v]
}
append d $v
}
puts stderr $d
}
proc _git_cmd {name} {
global _git_cmd_path
@ -339,7 +362,7 @@ proc _lappend_nice {cmd_var} {
}
proc git {args} {
set opt [list exec]
set opt [list]
while {1} {
switch -- [lindex $args 0] {
@ -359,12 +382,18 @@ proc git {args} {
set cmdp [_git_cmd [lindex $args 0]]
set args [lrange $args 1 end]
return [eval $opt $cmdp $args]
_trace_exec [concat $opt $cmdp $args]
set result [eval exec $opt $cmdp $args]
if {$::_trace} {
puts stderr "< $result"
}
return $result
}
proc _open_stdout_stderr {cmd} {
_trace_exec $cmd
if {[catch {
set fd [open $cmd r]
set fd [open [concat [list | ] $cmd] r]
} err]} {
if { [lindex $cmd end] eq {2>@1}
&& $err eq {can not find channel named "1"}
@ -375,6 +404,7 @@ proc _open_stdout_stderr {cmd} {
# to try to start it a second time.
#
set fd [open [concat \
[list | ] \
[lrange $cmd 0 end-1] \
[list |& cat] \
] r]
@ -387,7 +417,7 @@ proc _open_stdout_stderr {cmd} {
}
proc git_read {args} {
set opt [list |]
set opt [list]
while {1} {
switch -- [lindex $args 0] {
@ -415,7 +445,7 @@ proc git_read {args} {
}
proc git_write {args} {
set opt [list |]
set opt [list]
while {1} {
switch -- [lindex $args 0] {
@ -435,7 +465,8 @@ proc git_write {args} {
set cmdp [_git_cmd [lindex $args 0]]
set args [lrange $args 1 end]
return [open [concat $opt $cmdp $args] w]
_trace_exec [concat $opt $cmdp $args]
return [open [concat [list | ] $opt $cmdp $args] w]
}
proc githook_read {hook_name args} {
@ -455,12 +486,12 @@ proc githook_read {hook_name args} {
}
set scr {if test -x "$1";then exec "$@";fi}
set sh_c [list | $interp -c $scr $interp $pchook]
set sh_c [list $interp -c $scr $interp $pchook]
return [_open_stdout_stderr [concat $sh_c $args]]
}
if {[file executable $pchook]} {
return [_open_stdout_stderr [concat [list | $pchook] $args]]
return [_open_stdout_stderr [concat [list $pchook] $args]]
}
return {}
@ -1096,27 +1127,18 @@ proc rescan {after {honor_trustmtime 1}} {
}
if {[is_Cygwin]} {
set is_git_info_link {}
set is_git_info_exclude {}
proc have_info_exclude {} {
global is_git_info_link is_git_info_exclude
global is_git_info_exclude
if {$is_git_info_link eq {}} {
set is_git_info_link [file isfile [gitdir info.lnk]]
}
if {$is_git_info_link} {
if {$is_git_info_exclude eq {}} {
if {[catch {exec test -f [gitdir info exclude]}]} {
set is_git_info_exclude 0
} else {
set is_git_info_exclude 1
}
if {$is_git_info_exclude eq {}} {
if {[catch {exec test -f [gitdir info exclude]}]} {
set is_git_info_exclude 0
} else {
set is_git_info_exclude 1
}
return $is_git_info_exclude
} else {
return [file readable [gitdir info exclude]]
}
return $is_git_info_exclude
}
} else {
proc have_info_exclude {} {

View File

@ -388,9 +388,7 @@ method _do_new {} {
-command [cb _new_local_path]
set w_localpath $w_body.where.t
pack $w_body.where.b -side right
pack $w_body.where.l -side left
pack $w_body.where.t -fill x
grid $w_body.where.l $w_body.where.t $w_body.where.b -sticky ew
pack $w_body.where -fill x
trace add variable @local_path write [cb _write_local_path]
@ -987,9 +985,7 @@ method _do_open {} {
-text [mc "Browse"] \
-command [cb _open_local_path]
pack $w_body.where.b -side right
pack $w_body.where.l -side left
pack $w_body.where.t -fill x
grid $w_body.where.l $w_body.where.t $w_body.where.b -sticky ew
pack $w_body.where -fill x
trace add variable @local_path write [cb _write_local_path]