* [PATCH (GIT-GUI)] git-gui: Make Ctrl-T safe to use for conflicting files.
@ 2008-09-30 8:12 Alexander Gavrilov
0 siblings, 0 replies; only message in thread
From: Alexander Gavrilov @ 2008-09-30 8:12 UTC (permalink / raw)
To: Git Mailing List; +Cc: Shawn O. Pearce, Johannes Sixt
A previous patch added a check for conflict markers, which
is done when the file is about to be staged due to a click
on the icon. However, pressing Ctrl-T still immediately
stages the file without confirmation. This patch fixes it.
The check requires a loaded diff, so staging multiple files
at once won't work if they are unmerged.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
---
git-gui.sh | 4 +++-
lib/index.tcl | 11 +++++++++--
lib/merge.tcl | 1 +
lib/mergetool.tcl | 7 ++++---
4 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/git-gui.sh b/git-gui.sh
index 4085e8f..717817e 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -2090,7 +2090,9 @@ proc toggle_or_diff {w x y} {
if {$col == 0 && $y > 1} {
# Conflicts need special handling
if {[string first {U} $state] >= 0} {
- merge_stage_workdir $path $w $lno
+ # $w must always be $ui_workdir, but...
+ if {$w ne $ui_workdir} { set lno {} }
+ merge_stage_workdir $path $lno
return
}
diff --git a/lib/index.tcl b/lib/index.tcl
index b045219..d33896a 100644
--- a/lib/index.tcl
+++ b/lib/index.tcl
@@ -298,11 +298,18 @@ proc add_helper {txt paths} {
set after {}
foreach path $paths {
switch -glob -- [lindex $file_states($path) 0] {
+ _U -
+ U? {
+ if {$path eq $current_diff_path} {
+ unlock_index
+ merge_stage_workdir $path
+ return
+ }
+ }
_O -
?M -
?D -
- ?T -
- U? {
+ ?T {
lappend pathList $path
if {$path eq $current_diff_path} {
set after {reshow_diff;}
diff --git a/lib/merge.tcl b/lib/merge.tcl
index 5c01875..ac4c7de 100644
--- a/lib/merge.tcl
+++ b/lib/merge.tcl
@@ -40,6 +40,7 @@ The rescan will be automatically started now.
_O {
continue; # and pray it works!
}
+ _U
U? {
error_popup [mc "You are in the middle of a conflicted merge.
diff --git a/lib/mergetool.tcl b/lib/mergetool.tcl
index 6ab5701..1984c64 100644
--- a/lib/mergetool.tcl
+++ b/lib/mergetool.tcl
@@ -23,13 +23,14 @@ This operation can be undone only by restarting the merge." \
}
}
-proc merge_stage_workdir {path w lno} {
+proc merge_stage_workdir {path {lno {}}} {
global current_diff_path diff_active
+ global current_diff_side ui_workdir
if {$diff_active} return
- if {$path ne $current_diff_path} {
- show_diff $path $w $lno {} [list do_merge_stage_workdir $path]
+ if {$path ne $current_diff_path || $ui_workdir ne $current_diff_side} {
+ show_diff $path $ui_workdir $lno {} [list do_merge_stage_workdir $path]
} else {
do_merge_stage_workdir $path
}
--
1.6.0.20.g6148bc
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2008-09-30 8:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-30 8:12 [PATCH (GIT-GUI)] git-gui: Make Ctrl-T safe to use for conflicting files Alexander Gavrilov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.