git-gui: Add menu option to include only selected files.
[gitweb.git] / git-gui
diff --git a/git-gui b/git-gui
index 901d93236e6b5630e7f9fc6a4e5dd0a3916e272f..a020895020bf3c658f10bd8672b5b0004327bf1c 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -1853,14 +1853,14 @@ proc do_rescan {} {
        rescan {set ui_status_value {Ready.}}
 }
 
-proc do_include_all {} {
+proc include_helper {txt paths} {
        global file_states current_diff
 
        if {![lock_index begin-update]} return
 
        set pathList [list]
        set after {}
-       foreach path [array names file_states] {
+       foreach path $paths {
                switch -- [lindex $file_states($path) 0] {
                AM -
                MM -
@@ -1877,12 +1877,33 @@ proc do_include_all {} {
                unlock_index
        } else {
                update_index \
-                       "Including all modified files" \
+                       $txt \
                        $pathList \
                        [concat $after {set ui_status_value {Ready to commit.}}]
        }
 }
 
+proc do_include_selection {} {
+       global current_diff selected_paths
+
+       if {[array size selected_paths] > 0} {
+               include_helper \
+                       {Including selected files} \
+                       [array names selected_paths]
+       } elseif {$current_diff ne {}} {
+               include_helper \
+                       "Including [short_path $current_diff]" \
+                       [list $current_diff]
+       }
+}
+
+proc do_include_all {} {
+       global file_states
+       include_helper \
+               {Including all modified files} \
+               [array names file_states]
+}
+
 set GIT_COMMITTER_IDENT {}
 
 proc do_signoff {} {
@@ -2442,6 +2463,11 @@ lappend disable_on_lock \
        -font font_ui
 lappend disable_on_lock \
        [list .mbar.commit entryconf [.mbar.commit index last] -state]
+.mbar.commit add command -label {Include Selected Files} \
+       -command do_include_selection \
+       -font font_ui
+lappend disable_on_lock \
+       [list .mbar.commit entryconf [.mbar.commit index last] -state]
 .mbar.commit add command -label {Include All Files} \
        -command do_include_all \
        -accelerator $M1T-I \