[PATCH/RFC 3/3] git-gui: Do not suggest a gc if gc --auto would not do it
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Feb 18, 2010, 14:41 UTC
- Message-ID
- <20100218144122.GC30520@progeny.tock>
- In-Reply-To
- <20100218143431.GA30486@progeny.tock>
In particular, if the user has set gc.auto to 0 or some other value, respect that setting.
The gui-specific heuristic of assuming Windows filesystems will tolerate fewer loose objects has been carried over.
This patch vastly increases the loose object count threshold for a sort of compatibility with the console-based git programs. The ideal threshold may be different since the user can easily turn down an offer to gc. But for now, let us assume that a number of loose objects that is tolerable when working from the command line will also be tolerable in the gui.
Unfortunately, this duplicates code from builtin-gc.c. A proper fix would be involve teaching gc to cooperate with the gui more closely.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> --- That’s the end of the series. Thoughts?
lib/database.tcl | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/lib/database.tcl b/lib/database.tcl index c8184de..4b07865 100644 --- a/lib/database.tcl +++ b/lib/database.tcl @@ -100,15 +100,22 @@ proc too_many_loose_objects {} { # distributed, we can check only one and get a reasonable # estimate. # - # Roughly based on the function of the same name in builtin-gc.c + # Based on the function of the same name in builtin-gc.c # # 'git gc' should learn a new --porcelain option # so it can take care of this. + + set gc_auto_threshold [get_config gc.auto] + if {$gc_auto_threshold eq {}} { + set gc_auto_threshold 6700 + } + if {$gc_auto_threshold <= 0} { + return 0 + } set ndirs 1 - set limit 8 + set limit [expr {($gc_auto_threshold + 255) / 256}] if {[is_Windows]} { set ndirs 4 - set limit 1 } set count [llength [glob \
-- 1.7.0