git-commit-vandalism/lib
Alexander Gavrilov 584fa9ccf4 git-gui: Avoid an infinite rescan loop in handle_empty_diff.
If the index update machinery and git diff happen to disagree
on whether a particular file is modified, it may cause git-gui
to enter an infinite index rescan loop, where an empty diff
starts a rescan, which finds the same set of files modified,
and tries to display the diff for the first one, which happens
to be the empty one. A current example of a possible disagreement
point is the autocrlf filter.

This patch breaks the loop by using a global counter to track
the auto-rescans. The variable is reset whenever a non-empty
diff is displayed.

Another suggested approach, which is based on giving the
--exit-code argument to git diff, cannot be used, because
diff-files seems to trust the timestamps in the index, and
returns a non-zero code even if the file is actually
unchanged, which essentially defeats the purpose of the
auto-rescan logic.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2009-02-08 11:50:11 -08:00
..
about.tcl git-gui: Ensure all spellchecker 'class' variables are initialized 2008-02-21 00:22:06 -05:00
blame.tcl git-gui: Fix commit encoding handling. 2008-12-08 08:33:05 -08:00
branch_checkout.tcl Mark strings for translation. 2007-09-02 16:54:48 +01:00
branch_create.tcl git-gui: Setup branch.remote,merge for shorthand git-pull 2008-05-08 20:20:27 -04:00
branch_delete.tcl git-gui: Delete branches with 'git branch -D' to clear config 2008-05-08 20:29:42 -04:00
branch_rename.tcl git-gui: Paper bag fix missing translated strings 2007-09-14 01:51:18 -04:00
branch.tcl git-gui: Always use absolute path to all git executables 2007-07-09 01:17:09 -04:00
browser.tcl git-gui: Allow specifying an initial line for git gui blame. 2008-08-24 22:00:01 -07:00
checkout_op.tcl git-gui: Setup branch.remote,merge for shorthand git-pull 2008-05-08 20:20:27 -04:00
choose_font.tcl git-gui: if a background colour is set, set foreground colour as well 2008-03-05 23:47:11 -05:00
choose_repository.tcl git-gui: Add the Show SSH Key item to the clone dialog. 2008-11-11 09:29:36 -08:00
choose_rev.tcl git-gui: Work around random missing scrollbar in revision list 2008-01-22 23:37:15 -05:00
class.tcl git-gui: Fix window manager problems on ion3 2007-08-20 00:38:13 -04:00
commit.tcl git-gui: Fix post-commit status with subject in non-locale encoding 2009-02-01 14:56:54 -08:00
console.tcl git-gui: if a background colour is set, set foreground colour as well 2008-03-05 23:47:11 -05:00
database.tcl git-gui: Report less precise object estimates for database compression 2008-04-14 19:34:23 -04:00
date.tcl git-gui: Localize commit/author dates when displaying them 2007-09-10 01:54:16 -04:00
diff.tcl git-gui: Avoid an infinite rescan loop in handle_empty_diff. 2009-02-08 11:50:11 -08:00
encoding.tcl git-gui: Optimize encoding name resolution using a lookup table. 2008-09-24 12:48:32 -07:00
error.tcl git-gui: if a background colour is set, set foreground colour as well 2008-03-05 23:47:11 -05:00
git-gui.ico git-gui: Improve the application icon on Windows. 2007-12-02 23:05:10 -05:00
index.tcl git-gui: Make Ctrl-T safe to use for conflicting files. 2008-09-30 11:47:33 -07:00
logo.tcl git-gui: Refactor Henrik Nyh's logo into its own procedure 2007-10-10 01:12:15 -04:00
merge.tcl git-gui: Fix switch statement in lib/merge.tcl 2008-10-10 09:31:58 -07:00
mergetool.tcl git-gui: Make Ctrl-T safe to use for conflicting files. 2008-09-30 11:47:33 -07:00
option.tcl git-gui: Implement system-wide configuration handling. 2008-11-16 13:33:09 -08:00
remote_add.tcl git-gui: Fix fetching from remotes when adding them 2008-09-30 12:59:37 -07:00
remote_branch_delete.tcl git-gui: Avoid using the term URL when specifying repositories 2008-09-30 12:59:18 -07:00
remote.tcl git-gui: Fix removing non-pushable remotes 2008-09-30 12:59:37 -07:00
search.tcl git-gui: Fix the search bar destruction handler. 2008-11-16 14:02:13 -08:00
shortcut.tcl git-gui: Use proper Windows shortcuts instead of bat files 2007-10-12 23:07:58 -04:00
spellcheck.tcl git-gui: Remove space from the end of aspell's reply before processing 2008-09-30 12:59:18 -07:00
sshkey.tcl git-gui: Add a dialog that shows the OpenSSH public key. 2008-11-01 16:01:23 -07:00
status_bar.tcl Merge branch 'maint' 2007-10-20 20:43:36 -04:00
tools_dlg.tcl git-gui: Allow Tools request arguments from the user. 2008-11-16 13:33:09 -08:00
tools.tcl git-gui: Implement automatic rescan after Tool execution. 2008-11-16 13:33:33 -08:00
transport.tcl git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror. 2008-12-02 07:20:19 -08:00
win32_shortcut.js git-gui: Use proper Windows shortcuts instead of bat files 2007-10-12 23:07:58 -04:00
win32.tcl git-gui: Use proper Windows shortcuts instead of bat files 2007-10-12 23:07:58 -04:00