summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 29853b9)
raw | patch | inline | side by side (parent: 29853b9)
author | Alexander Gavrilov <angavrilov@gmail.com> | |
Sat, 30 Aug 2008 21:04:10 +0000 (01:04 +0400) | ||
committer | Shawn O. Pearce <spearce@spearce.org> | |
Fri, 5 Sep 2008 04:28:55 +0000 (21:28 -0700) |
If an untracked file is selected, F5 and other manual rescan synonyms
would try to select a tracked file instead. Also, clicking on an icon
in the unstaged changes list skips over untracked files, unless the
file clicked is untracked itself.
The objective is to make it easier to ignore untracked files showing
up in the Unstaged Changes list, and ensure that no modifications
to tracked objects are left unstaged.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
would try to select a tracked file instead. Also, clicking on an icon
in the unstaged changes list skips over untracked files, unless the
file clicked is untracked itself.
The objective is to make it easier to ignore untracked files showing
up in the Unstaged Changes list, and ensure that no modifications
to tracked objects are left unstaged.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh | patch | blob | history |
diff --git a/git-gui.sh b/git-gui.sh
index 74e0a7bcabb655985fe8b87a69298ce278d20046..10d8a4422f151eda78a24ff533eb20c3d775d099 100755 (executable)
--- a/git-gui.sh
+++ b/git-gui.sh
rescan ui_ready
}
+proc ui_do_rescan {} {
+ rescan {force_first_diff; ui_ready}
+}
+
proc do_commit {} {
commit_tree
}
}
}
+proc force_first_diff {} {
+ global current_diff_path
+
+ if {[info exists file_states($current_diff_path)]} {
+ set state [lindex $file_states($current_diff_path) 0]
+
+ if {[string index $state 1] ne {O}} return
+ }
+
+ select_first_diff
+}
+
proc toggle_or_diff {w x y} {
global file_states file_lists current_diff_path ui_index ui_workdir
global last_clicked selected_paths
# Do not stage files with conflicts
if {[info exists file_states($path)]} {
set state [lindex $file_states($path) 0]
- if {[string first {U} $state] >= 0} {
- set col 1
- }
+ } else {
+ set state {__}
+ }
+
+ if {[string first {U} $state] >= 0} {
+ set col 1
}
+ # Restage the file, or simply show the diff
if {$col == 0 && $y > 1} {
- set after [next_diff_after_action $w $path $lno]
+ if {[string index $state 1] eq {O}} {
+ set mmask {}
+ } else {
+ set mmask {[^O]}
+ }
+
+ set after [next_diff_after_action $w $path $lno $mmask]
if {$w eq $ui_index} {
update_indexinfo \
.mbar.commit add separator
.mbar.commit add command -label [mc Rescan] \
- -command do_rescan \
+ -command ui_do_rescan \
-accelerator F5
lappend disable_on_lock \
[list .mbar.commit entryconf [.mbar.commit index last] -state]
pack .vpane.lower.commarea.buttons -side left -fill y
button .vpane.lower.commarea.buttons.rescan -text [mc Rescan] \
- -command do_rescan
+ -command ui_do_rescan
pack .vpane.lower.commarea.buttons.rescan -side top -fill x
lappend disable_on_lock \
{.vpane.lower.commarea.buttons.rescan conf -state}
bind . <$M1B-Key-P> do_push_anywhere
}
-bind . <Key-F5> do_rescan
-bind . <$M1B-Key-r> do_rescan
-bind . <$M1B-Key-R> do_rescan
+bind . <Key-F5> ui_do_rescan
+bind . <$M1B-Key-r> ui_do_rescan
+bind . <$M1B-Key-R> ui_do_rescan
bind . <$M1B-Key-s> do_signoff
bind . <$M1B-Key-S> do_signoff
bind . <$M1B-Key-t> do_add_selection