]> asedeno.scripts.mit.edu Git - git.git/blobdiff - lib/index.tcl
git-gui: Correct size of dictionary name widget in options dialog
[git.git] / lib / index.tcl
index 9e04f2b68283a2bf495f65bcd7226040ecae4750..3c1fce7475d362d1880d915ff4bdf168fda28593 100644 (file)
@@ -1,6 +1,56 @@
 # git-gui index (add/remove) support
 # Copyright (C) 2006, 2007 Shawn Pearce
 
+proc _delete_indexlock {} {
+       if {[catch {file delete -- [gitdir index.lock]} err]} {
+               error_popup [strcat [mc "Unable to unlock the index."] "\n\n$err"]
+       }
+}
+
+proc _close_updateindex {fd after} {
+       fconfigure $fd -blocking 1
+       if {[catch {close $fd} err]} {
+               set w .indexfried
+               toplevel $w
+               wm title $w [strcat "[appname] ([reponame]): " [mc "Index Error"]]
+               wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
+               pack [label $w.msg \
+                       -justify left \
+                       -anchor w \
+                       -text [strcat \
+                               [mc "Updating the Git index failed.  A rescan will be automatically started to resynchronize git-gui."] \
+                               "\n\n$err"] \
+                       ] -anchor w
+
+               frame $w.buttons
+               button $w.buttons.continue \
+                       -text [mc "Continue"] \
+                       -command [list destroy $w]
+               pack $w.buttons.continue -side right -padx 5
+               button $w.buttons.unlock \
+                       -text [mc "Unlock Index"] \
+                       -command "destroy $w; _delete_indexlock"
+               pack $w.buttons.unlock -side right
+               pack $w.buttons -side bottom -fill x -pady 10 -padx 10
+
+               wm protocol $w WM_DELETE_WINDOW update
+               bind $w.buttons.continue <Visibility> "
+                       grab $w
+                       focus $w.buttons.continue
+               "
+               tkwait window $w
+
+               $::main_status stop
+               unlock_index
+               rescan $after 0
+               return
+       }
+
+       $::main_status stop
+       unlock_index
+       uplevel #0 $after
+}
+
 proc update_indexinfo {msg pathList after} {
        global update_index_cp
 
@@ -35,10 +85,7 @@ proc write_update_indexinfo {fd pathList totalCnt batch after} {
        global file_states current_diff_path
 
        if {$update_index_cp >= $totalCnt} {
-               close $fd
-               unlock_index
-               $::main_status stop
-               uplevel #0 $after
+               _close_updateindex $fd $after
                return
        }
 
@@ -100,10 +147,7 @@ proc write_update_index {fd pathList totalCnt batch after} {
        global file_states current_diff_path
 
        if {$update_index_cp >= $totalCnt} {
-               close $fd
-               unlock_index
-               $::main_status stop
-               uplevel #0 $after
+               _close_updateindex $fd $after
                return
        }
 
@@ -175,10 +219,7 @@ proc write_checkout_index {fd pathList totalCnt batch after} {
        global file_states current_diff_path
 
        if {$update_index_cp >= $totalCnt} {
-               close $fd
-               unlock_index
-               $::main_status stop
-               uplevel #0 $after
+               _close_updateindex $fd $after
                return
        }
 
@@ -269,7 +310,7 @@ proc add_helper {txt paths} {
                update_index \
                        $txt \
                        $pathList \
-                       [concat $after {ui_status {Ready to commit.}}]
+                       [concat $after {ui_status [mc "Ready to commit."]}]
        }
 }
 
@@ -345,7 +386,9 @@ proc revert_helper {txt paths} {
        set reply [tk_dialog \
                .confirm_revert \
                "[appname] ([reponame])" \
-               [mc "Any unstaged changes will be permanently lost by the revert."] \
+               "$query
+
+[mc "Any unstaged changes will be permanently lost by the revert."]" \
                question \
                1 \
                [mc "Do Nothing"] \