Code

git-gui: Don't allow merges in the middle of other things.
authorShawn O. Pearce <spearce@spearce.org>
Fri, 26 Jan 2007 09:11:10 +0000 (04:11 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 26 Jan 2007 09:11:10 +0000 (04:11 -0500)
If the user is in the middle of a commit they have files which are
modified.  These may conflict with any merge that they may want
to perform, which would cause problems if the user wants to abort
a bad merge as we wouldn't have a checkpoint to roll back onto.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index 31ef0e60ac7ca631f4de52efb8a32366106da124..ae883f90bd0a755b7cdec98d847491bc001470b0 100755 (executable)
@@ -2629,6 +2629,9 @@ The rescan will be automatically started now.
 
        foreach path [array names file_states] {
                switch -glob -- [lindex $file_states($path) 0] {
+               _O {
+                       continue; # and pray it works!
+               }
                U? {
                        error_popup "You are in the middle of a conflicted merge.
 
@@ -2637,6 +2640,18 @@ File [short_path $path] has merge conflicts.
 You must resolve them, add the file, and commit to
 complete the current merge.  Only then can you
 begin another merge.
+"
+                       unlock_index
+                       return 0
+               }
+               ?? {
+                       error_popup "You are in the middle of a change.
+
+File [short_path $path] is modified.
+
+You should complete the current commit before
+starting a merge.  Doing so will help you abort
+a failed merge, should the need arise.
 "
                        unlock_index
                        return 0