Merge branch 'maint'

* maint:
  git-gui: Don't display CR within console windows
  git-gui: Handle progress bars from newer gits
  git-gui: Correctly report failures from git-write-tree

Conflicts:

	lib/commit.tcl
	lib/console.tcl
diff --git a/lib/commit.tcl b/lib/commit.tcl
index 7099f5c..10b0430 100644
--- a/lib/commit.tcl
+++ b/lib/commit.tcl
@@ -253,7 +253,7 @@
 	global repo_config
 
 	gets $fd_wt tree_id
-	if {$tree_id eq {} || [catch {close $fd_wt} err]} {
+	if {[catch {close $fd_wt} err]} {
 		error_popup [strcat [mc "write-tree failed:"] "\n\n$err"]
 		ui_status {Commit failed.}
 		unlock_index
diff --git a/lib/console.tcl b/lib/console.tcl
index 2075374..5597188 100644
--- a/lib/console.tcl
+++ b/lib/console.tcl
@@ -120,7 +120,7 @@
 			} else {
 				$w_t delete $console_cr end
 				$w_t insert end "\n"
-				$w_t insert end [string range $buf $c $cr]
+				$w_t insert end [string range $buf $c [expr {$cr - 1}]]
 				set c $cr
 				incr c
 			}
diff --git a/lib/status_bar.tcl b/lib/status_bar.tcl
index 5c5bf7c..51d4177 100644
--- a/lib/status_bar.tcl
+++ b/lib/status_bar.tcl
@@ -97,7 +97,10 @@
 
 	set prior [string range $meter 0 $r]
 	set meter [string range $meter [expr {$r + 1}] end]
-	if {[regexp "\\((\\d+)/(\\d+)\\)\\s+done\r\$" $prior _j a b]} {
+	set p "\\((\\d+)/(\\d+)\\)"
+	if {[regexp ":\\s*\\d+% $p\(?:, done.\\s*\n|\\s*\r)\$" $prior _j a b]} {
+		update $this $a $b
+	} elseif {[regexp "$p\\s+done\r\$" $prior _j a b]} {
 		update $this $a $b
 	}
 }