summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c8ebafd)
raw | patch | inline | side by side (parent: c8ebafd)
author | Shawn O. Pearce <spearce@spearce.org> | |
Sun, 12 Nov 2006 23:16:45 +0000 (18:16 -0500) | ||
committer | Shawn O. Pearce <spearce@spearce.org> | |
Mon, 13 Nov 2006 05:10:39 +0000 (00:10 -0500) |
This is one of those stupid Tcl mistakes that an experienced Tcl
programmer just wouldn't make. We should always use eq and ne to
compare string values (and never == or !=) as when we use ==/!=
Tcl will attempt to convert either side to numeric if one of the
two sides looks like a numeric. This could cause some trouble if
a file named "1" exists and a different file named "1.0" also exists;
their paths are equal according to == but not according to eq.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
programmer just wouldn't make. We should always use eq and ne to
compare string values (and never == or !=) as when we use ==/!=
Tcl will attempt to convert either side to numeric if one of the
two sides looks like a numeric. This could cause some trouble if
a file named "1" exists and a different file named "1.0" also exists;
their paths are equal according to == but not according to eq.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui | patch | blob | history |
index 7eeff9061cde87ebe5a870231e0da8d35dc246ee..05ef8e2e336d8f0d522bc7fcd615817f2c643406 100755 (executable)
--- a/git-gui
+++ b/git-gui
foreach name [array names default_config] {
set value $global_config_new($name)
- if {$value != $global_config($name)} {
- if {$value == $default_config($name)} {
+ if {$value ne $global_config($name)} {
+ if {$value eq $default_config($name)} {
catch {exec git repo-config --global --unset $name}
} else {
regsub -all "\[{}\]" $value {"} value
exec git repo-config --global $name $value
}
set global_config($name) $value
- if {$value == $repo_config($name)} {
+ if {$value eq $repo_config($name)} {
catch {exec git repo-config --unset $name}
set repo_config($name) $value
}
foreach name [array names default_config] {
set value $repo_config_new($name)
- if {$value != $repo_config($name)} {
- if {$value == $global_config($name)} {
+ if {$value ne $repo_config($name)} {
+ if {$value eq $global_config($name)} {
catch {exec git repo-config --unset $name}
} else {
regsub -all "\[{}\]" $value {"} value
global gitdir appname
set title $appname
- if {$gitdir != {}} {
+ if {$gitdir ne {}} {
append title { (}
append title [lindex \
[file split [file normalize [file dirname $gitdir]]] \
global gitdir appname
set title $appname
- if {$gitdir != {}} {
+ if {$gitdir ne {}} {
append title { (}
append title [lindex \
[file split [file normalize [file dirname $gitdir]]] \
error_popup "Cannot find the git directory:\n\n$err"
exit 1
}
-if {$cdup != ""} {
+if {$cdup ne ""} {
cd $cdup
}
unset cdup
set single_commit 0
-if {$appname == {git-citool}} {
+if {$appname eq {git-citool}} {
set single_commit 1
}
proc lock_index {type} {
global index_lock_type disable_on_lock
- if {$index_lock_type == {none}} {
+ if {$index_lock_type eq {none}} {
set index_lock_type $type
foreach w $disable_on_lock {
uplevel #0 $w disabled
}
return 1
- } elseif {$index_lock_type == {begin-update} && $type == {update}} {
+ } elseif {$index_lock_type eq {begin-update} && $type eq {update}} {
set index_lock_type $type
return 1
}
if {$status_active || ![lock_index read]} return
repository_state new_HEAD new_type
- if {$commit_type == {amend}
- && $new_type == {normal}
- && $new_HEAD == $HEAD} {
+ if {$commit_type eq {amend}
+ && $new_type eq {normal}
+ && $new_HEAD eq $HEAD} {
} else {
set HEAD $new_HEAD
set PARENT $new_HEAD
array unset file_states
if {![$ui_comm edit modified]
- || [string trim [$ui_comm get 0.0 end]] == {}} {
+ || [string trim [$ui_comm get 0.0 end]] eq {}} {
if {[load_message GITGUI_MSG]} {
} elseif {[load_message MERGE_MSG]} {
} elseif {[load_message SQUASH_MSG]} {
$ui_comm edit reset
}
- if {$repo_config(gui.trustmtime) == {true}} {
+ if {$repo_config(gui.trustmtime) eq {true}} {
update_status_stage2 {} $final
} else {
set status_active 1
global status_active
global buf_rdi buf_rdf buf_rlo
- if {$fd != {}} {
+ if {$fd ne {}} {
read $fd
if {![eof $fd]} return
close $fd
proc reshow_diff {} {
global ui_fname_value ui_status_value file_states
- if {$ui_fname_value == {}
+ if {$ui_fname_value eq {}
|| [catch {set s $file_states($ui_fname_value)}]} {
clear_diff
} else {
set path $ui_fname_value
set s $file_states($path)
- if {[lindex $s 0] != {_M}} return
+ if {[lindex $s 0] ne {_M}} return
info_popup "No differences detected.
if {$diff_active || ![lock_index read]} return
clear_diff
- if {$w == {} || $lno == {}} {
+ if {$w eq {} || $lno == {}} {
foreach w [array names file_lists] {
set lno [lsearch -sorted $file_lists($w) $path]
if {$lno >= 0} {
}
}
}
- if {$w != {} && $lno >= 1} {
+ if {$w ne {} && $lno >= 1} {
$w tag add in_diff $lno.0 [expr $lno + 1].0
}
unlock_index
set ui_status_value {Ready.}
- if {$repo_config(gui.trustmtime) == {true}
- && [$ui_diff index end] == {2.0}} {
+ if {$repo_config(gui.trustmtime) eq {true}
+ && [$ui_diff index end] eq {2.0}} {
handle_empty_diff
}
}
proc load_last_commit {} {
global HEAD PARENT commit_type ui_comm
- if {$commit_type == {amend}} return
- if {$commit_type != {normal}} {
+ if {$commit_type eq {amend}} return
+ if {$commit_type ne {normal}} {
error_popup "Can't amend a $commit_type commit."
return
}
# -- Our in memory state should match the repository.
#
repository_state curHEAD cur_type
- if {$commit_type == {amend}
- && $cur_type == {normal}
- && $curHEAD == $HEAD} {
- } elseif {$commit_type != $cur_type || $HEAD != $curHEAD} {
+ if {$commit_type eq {amend}
+ && $cur_type eq {normal}
+ && $curHEAD eq $HEAD} {
+ } elseif {$commit_type ne $cur_type || $HEAD ne $curHEAD} {
error_popup {Last scanned state does not match repository state.
Its highly likely that another Git program modified the
# -- A message is required.
#
set msg [string trim [$ui_comm get 1.0 end]]
- if {$msg == {}} {
+ if {$msg eq {}} {
error_popup {Please supply a commit message.
A good commit message has the following format:
# -- Ask the pre-commit hook for the go-ahead.
#
set pchook [file join $gitdir hooks pre-commit]
- if {$tcl_platform(platform) == {windows} && [file isfile $pchook]} {
+ if {$tcl_platform(platform) eq {windows} && [file isfile $pchook]} {
set pchook [list sh -c [concat \
"if test -x \"$pchook\";" \
"then exec \"$pchook\" 2>&1;" \
} else {
set pchook {}
}
- if {$pchook != {}} {
+ if {$pchook ne {}} {
set ui_status_value {Calling pre-commit hook...}
set pch_error {}
set fd_ph [open "| $pchook" r]
global file_states
gets $fd_wt tree_id
- if {$tree_id == {} || [catch {close $fd_wt} err]} {
+ if {$tree_id eq {} || [catch {close $fd_wt} err]} {
error_popup "write-tree failed:\n\n$err"
set ui_status_value {Commit failed.}
unlock_index
# -- Create the commit.
#
set cmd [list git commit-tree $tree_id]
- if {$PARENT != {}} {
+ if {$PARENT ne {}} {
lappend cmd -p $PARENT
}
- if {$commit_type == {merge}} {
+ if {$commit_type eq {merge}} {
if {[catch {
set fd_mh [open [file join $gitdir MERGE_HEAD] r]
while {[gets $fd_mh merge_head] >= 0} {
return
}
}
- if {$PARENT == {}} {
+ if {$PARENT eq {}} {
# git commit-tree writes to stderr during initial commit.
lappend cmd 2>/dev/null
}
# -- Update the HEAD ref.
#
set reflogm commit
- if {$commit_type != {normal}} {
+ if {$commit_type ne {normal}} {
append reflogm " ($commit_type)"
}
set i [string first "\n" $msg]
# -- Run the post-commit hook.
#
set pchook [file join $gitdir hooks post-commit]
- if {$tcl_platform(platform) == {windows} && [file isfile $pchook]} {
+ if {$tcl_platform(platform) eq {windows} && [file isfile $pchook]} {
set pchook [list sh -c [concat \
"if test -x \"$pchook\";" \
"then exec \"$pchook\";" \
} elseif {![file executable $pchook]} {
set pchook {}
}
- if {$pchook != {}} {
+ if {$pchook ne {}} {
catch {exec $pchook &}
}
D? {set m _[string index $m 1]}
}
- if {$m == {__}} {
+ if {$m eq {__}} {
unset file_states($path)
} else {
lset file_states($path) 0 $m
# -- Our in memory state should match the repository.
#
repository_state curHEAD cur_type
- if {$commit_type != $cur_type || $HEAD != $curHEAD} {
+ if {$commit_type ne $cur_type || $HEAD ne $curHEAD} {
error_popup {Last scanned state does not match repository state.
Its highly likely that another Git program modified the
set w [new_console "pull $remote $branch" \
"Pulling new changes from branch $branch in $remote"]
set cmd [list git pull]
- if {$repo_config(gui.pullsummary) == {false}} {
+ if {$repo_config(gui.pullsummary) eq {false}} {
lappend cmd --no-summary
}
lappend cmd $remote
set icon [lindex $info 1]
}
- if {$s0 == {_}} {
+ if {$s0 eq {_}} {
set s0 [string index $state 0]
- } elseif {$s0 == {*}} {
+ } elseif {$s0 eq {*}} {
set s0 _
}
- if {$s1 == {_}} {
+ if {$s1 eq {_}} {
set s1 [string index $state 1]
- } elseif {$s1 == {*}} {
+ } elseif {$s1 eq {*}} {
set s1 _
}
set old_w [mapcol $old_m $path]
set new_icon [mapicon $new_m $path]
- if {$new_w != $old_w} {
+ if {$new_w ne $old_w} {
set lno [lsearch -sorted $file_lists($old_w) $path]
if {$lno >= 0} {
incr lno
-image $new_icon
$new_w insert $lno.1 "[escape_path $path]\n"
$new_w conf -state disabled
- } elseif {$new_icon != [mapicon $old_m $path]} {
+ } elseif {$new_icon ne [mapicon $old_m $path]} {
$new_w conf -state normal
$new_w image conf [lindex $s 1] -image $new_icon
$new_w conf -state disabled
puts -nonewline $fd $path
puts -nonewline $fd "\0"
display_file $path $new
- if {$ui_fname_value == $path} {
+ if {$ui_fname_value eq $path} {
show_diff $path
}
}
foreach remote $all_remotes {
set rb {}
- if {[array get repo_config remote.$remote.url] != {}} {
- if {[array get repo_config remote.$remote.fetch] != {}} {
+ if {[array get repo_config remote.$remote.url] ne {}} {
+ if {[array get repo_config remote.$remote.fetch] ne {}} {
regexp {^([^:]+):} \
[lindex $repo_config(remote.$remote.fetch) 0] \
line rb
set rb_short $rb
regsub ^refs/heads/ $rb {} rb_short
- if {$rb_short != {}} {
+ if {$rb_short ne {}} {
$m add command \
-label "Branch $rb_short from $remote..." \
-command [list pull_remote $remote $rb] \
if {$max_status_desc < [string length [lindex $i 3]]} {
set max_status_desc [string length [lindex $i 3]]
}
- if {[lindex $i 1] == {i}} {
+ if {[lindex $i 1] eq {i}} {
set all_cols([lindex $i 0]) $ui_index
} else {
set all_cols([lindex $i 0]) $ui_other
proc is_MacOSX {} {
global tcl_platform tk_library
- if {$tcl_platform(platform) == {unix}
- && $tcl_platform(os) == {Darwin}
+ if {$tcl_platform(platform) eq {unix}
+ && $tcl_platform(os) eq {Darwin}
&& [string match /Library/Frameworks/* $tk_library]} {
return 1
}
# -- Windows tosses the enviroment when we exec our child.
# But most users need that so we have to relogin. :-(
#
- if {$tcl_platform(platform) == {windows}} {
+ if {$tcl_platform(platform) eq {windows}} {
set cmd [list sh --login -c "cd \"[pwd]\" && [join $cmd { }]"]
}
global console_cr console_data
set buf [read $fd]
- if {$buf != {}} {
+ if {$buf ne {}} {
if {![winfo exists $w]} {console_init $w}
$w.m.t conf -state normal
set c 0
}
array unset console_cr $w
array unset console_data $w
- if {$after != {}} {
+ if {$after ne {}} {
uplevel #0 $after $ok
}
return
set ui_status_value $starting_gitk_msg
after 10000 {
- if {$ui_status_value == $starting_gitk_msg} {
+ if {$ui_status_value eq $starting_gitk_msg} {
set ui_status_value {Ready.}
}
}
- if {$tcl_platform(platform) == {windows}} {
+ if {$tcl_platform(platform) eq {windows}} {
exec sh -c gitk &
} else {
exec gitk &
#
set save [file join $gitdir GITGUI_MSG]
set msg [string trim [$ui_comm get 0.0 end]]
- if {[$ui_comm edit modified] && $msg != {}} {
+ if {[$ui_comm edit modified] && $msg ne {}} {
catch {
set fd [open $save w]
puts $fd [string trim [$ui_comm get 0.0 end]]
close $fd
}
- } elseif {$msg == {} && [file exists $save]} {
+ } elseif {$msg eq {} && [file exists $save]} {
file delete $save
}
if {[catch {set rc_geometry $repo_config(gui.geometry)}]} {
set rc_geometry {}
}
- if {$cfg_geometry != $rc_geometry} {
+ if {$cfg_geometry ne $rc_geometry} {
catch {exec git repo-config gui.geometry $cfg_geometry}
}
_D {lappend pathList $path}
}
}
- if {$pathList == {}} {
+ if {$pathList eq {}} {
unlock_index
} else {
update_index $pathList
proc do_signoff {} {
global ui_comm GIT_COMMITTER_IDENT
- if {$GIT_COMMITTER_IDENT == {}} {
+ if {$GIT_COMMITTER_IDENT eq {}} {
if {[catch {set me [exec git var GIT_COMMITTER_IDENT]} err]} {
error_popup "Unable to obtain your identity:\n\n$err"
return
set sob "Signed-off-by: $GIT_COMMITTER_IDENT"
set last [$ui_comm get {end -1c linestart} {end -1c}]
- if {$last != $sob} {
+ if {$last ne $sob} {
$ui_comm edit separator
- if {$last != {}
+ if {$last ne {}
&& ![regexp {^[A-Z][A-Za-z]*-[A-Za-z-]+: *} $last]} {
$ui_comm insert end "\n"
}
set lno [lindex $pos 0]
set col [lindex $pos 1]
set path [lindex $file_lists($w) [expr $lno - 1]]
- if {$path == {}} return
+ if {$path eq {}} return
if {$col > 0 && $shift == 1} {
show_diff $path $w $lno
set lno [lindex $pos 0]
set col [lindex $pos 1]
set path [lindex $file_lists($w) [expr $lno - 1]]
- if {$path == {}} return
+ if {$path eq {}} return
if {$col == 0} {
update_index [list $path]
set M1B M1
set M1T M1
-if {$tcl_platform(platform) == {windows}} {
+if {$tcl_platform(platform) eq {windows}} {
set M1B Control
set M1T Ctrl
} elseif {[is_MacOSX]} {