aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-01-22 17:10:38 -0500
committerShawn O. Pearce <spearce@spearce.org>2007-01-22 17:10:38 -0500
commit46aaf90b4901cbae9da9d59ba8cc914dcfc38aa3 (patch)
tree18169696c0297867dd35948d1938703adaf2442f
parent8ce03164842d250f1cf1dfbf9a245fd030195e24 (diff)
downloadgit-46aaf90b4901cbae9da9d59ba8cc914dcfc38aa3.tar.gz
git-46aaf90b4901cbae9da9d59ba8cc914dcfc38aa3.tar.xz
git-gui: Force an update-index --refresh on unchanged files.
Its possible for external programs to update file modification dates of many files within a repository. I've seen this on Windows with a popular virus scanner, sadly enough. If the user has Trust File Modification Timestamp enabled and the virus scanner touches a large number of files it can be annoying trying to clear them out of the 'Changed But Not Updated' file list by clicking on them one at a time to load the diff. So now we force a rescan as soon as one such file is found, and for just that rescan we disable the Trust File Modification Timestamp option thereby allowing Git to update the modification dates in the index. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rwxr-xr-xgit-gui.sh14
1 files changed, 4 insertions, 10 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 396a44e65..2350baa3a 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -335,7 +335,7 @@ proc PARENT {} {
return $empty_tree
}
-proc rescan {after} {
+proc rescan {after {honor_trustmtime 1}} {
global HEAD PARENT MERGE_HEAD commit_type
global ui_index ui_workdir ui_status_value ui_comm
global rescan_active file_states
@@ -366,7 +366,7 @@ proc rescan {after} {
$ui_comm edit modified false
}
- if {$repo_config(gui.trustmtime) eq {true}} {
+ if {$honor_trustmtime && $repo_config(gui.trustmtime) eq {true}} {
rescan_stage2 {} $after
} else {
set rescan_active 1
@@ -586,17 +586,11 @@ by another application and you currently have
the Trust File Modification Timestamps option
enabled, so Git did not automatically detect
that there are no content differences in this
-file.
-
-This file will now be removed from the modified
-files list, to prevent possible confusion.
-"
- if {[catch {exec git update-index -- $path} err]} {
- error_popup "Failed to refresh index:\n\n$err"
- }
+file."
clear_diff
display_file $path __
+ rescan {set ui_status_value {Ready.}} 0
}
proc show_diff {path w {lno {}}} {