summaryrefslogtreecommitdiff
path: root/git-gui
diff options
context:
space:
mode:
Diffstat (limited to 'git-gui')
-rwxr-xr-xgit-gui51
1 files changed, 42 insertions, 9 deletions
diff --git a/git-gui b/git-gui
index eb7329c218..8562983d36 100755
--- a/git-gui
+++ b/git-gui
@@ -71,6 +71,7 @@ proc update_status {{final Ready.}} {
global HEAD PARENT commit_type
global ui_index ui_other ui_status_value ui_comm
global status_active file_states
+ global cfg_trust_mtime
if {$status_active || ![lock_index read]} return
@@ -100,22 +101,28 @@ proc update_status {{final Ready.}} {
$ui_comm edit modified false
}
- set status_active 1
- set ui_status_value {Refreshing file status...}
- set fd_rf [open "| git update-index -q --unmerged --refresh" r]
- fconfigure $fd_rf -blocking 0 -translation binary
- fileevent $fd_rf readable [list read_refresh $fd_rf $final]
+ if {$cfg_trust_mtime == {true}} {
+ update_status_stage2 {} $final
+ } else {
+ set status_active 1
+ set ui_status_value {Refreshing file status...}
+ set fd_rf [open "| git update-index -q --unmerged --refresh" r]
+ fconfigure $fd_rf -blocking 0 -translation binary
+ fileevent $fd_rf readable [list update_status_stage2 $fd_rf $final]
+ }
}
-proc read_refresh {fd final} {
+proc update_status_stage2 {fd final} {
global gitdir PARENT commit_type
global ui_index ui_other ui_status_value ui_comm
global status_active file_states
global buf_rdi buf_rdf buf_rlo
- read $fd
- if {![eof $fd]} return
- close $fd
+ if {$fd != {}} {
+ read $fd
+ if {![eof $fd]} return
+ close $fd
+ }
set ls_others [list | git ls-files --others -z \
--exclude-per-directory=.gitignore]
@@ -860,6 +867,7 @@ proc toggle_mode {path} {
proc load_repo_config {} {
global repo_config
+ global cfg_trust_mtime
array unset repo_config
catch {
@@ -871,6 +879,22 @@ proc load_repo_config {} {
}
close $fd_rc
}
+
+ if {[catch {set cfg_trust_mtime $repo_config(gui.trustmtime)}]} {
+ set cfg_trust_mtime false
+ }
+}
+
+proc save_my_config {} {
+ global repo_config
+ global cfg_trust_mtime
+
+ if {[catch {set rc_trustMTime $repo_config(gui.trustmtime)}]} {
+ set rc_trustMTime false
+ }
+ if {$cfg_trust_mtime != $rc_trustMTime} {
+ exec git repo-config gui.trustMTime $cfg_trust_mtime
+ }
}
proc load_all_remotes {} {
@@ -1299,6 +1323,7 @@ proc do_quit {} {
file delete $save
}
+ save_my_config
destroy .
}
@@ -1407,6 +1432,7 @@ menu .mbar -tearoff 0
.mbar add cascade -label Fetch -menu .mbar.fetch
.mbar add cascade -label Pull -menu .mbar.pull
.mbar add cascade -label Push -menu .mbar.push
+.mbar add cascade -label Options -menu .mbar.options
. configure -menu .mbar
# -- Project Menu
@@ -1461,6 +1487,13 @@ menu .mbar.pull
# -- Push Menu
menu .mbar.push
+# -- Options Menu
+menu .mbar.options
+.mbar.options add checkbutton -label {Trust File Modification Timestamp} \
+ -offvalue false \
+ -onvalue true \
+ -variable cfg_trust_mtime
+
# -- Main Window Layout
panedwindow .vpane -orient vertical
panedwindow .vpane.files -orient horizontal