From: Shawn O. Pearce Date: Mon, 22 Jan 2007 22:10:38 +0000 (-0500) Subject: git-gui: Force an update-index --refresh on unchanged files. X-Git-Tag: gitgui-0.6.0~74 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=46aaf90b4901cbae9da9d59ba8cc914dcfc38aa3;p=git.git 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 --- 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 {}}} {