Code

git-gui: Skip unnecessary read-tree work during checkout
authorShawn O. Pearce <spearce@spearce.org>
Fri, 20 Jul 2007 07:56:06 +0000 (03:56 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 21 Jul 2007 09:00:37 +0000 (05:00 -0400)
I totally missed this obvious optimization in the checkout code path.
If our current repository HEAD is actually at the commit we are moving
to, and we agreed to perform this switch earlier, then we have no files
to update in the working directory and any stale mtimes are simply not
of consequence right now.  We can pretend like we ran a read-tree and
skip right into the post-read-tree work, such as updating the branch
and setting the symbolic-ref.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
lib/checkout_op.tcl

index 554c107032458f3b9585b58d7920924acf0ecb69..cb04d1e57e254858e1ceca36158e40aec570034f 100644 (file)
@@ -266,7 +266,9 @@ The rescan will be automatically started now.
                return
        }
 
-       if {[is_config_true gui.trustmtime]} {
+       if {$curHEAD eq $new_hash} {
+               _after_readtree $this
+       } elseif {[is_config_true gui.trustmtime]} {
                _readtree $this
        } else {
                ui_status {Refreshing file status...}