[PATCH] make commit fail when committing unresolved files
Stefano Tortarolo
stefano.tortarolo at gmail.com
Thu Jul 31 15:37:18 CDT 2008
# HG changeset patch
# User Stefano Tortarolo <stefano.tortarolo at gmail.com>
# Date 1217536632 -7200
# Node ID acb7091e4eea7a7dbd863d489233b03d6aaa4c9d
# Parent 8dc510c4caee437631e47ec9be891279abeffc33
make commit fail when committing unresolved files
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -12,6 +12,7 @@
import lock, transaction, stat, errno, ui, store
import os, revlog, time, util, extensions, hook, inspect
import match as match_
+import merge as merge_
class localrepository(repo.repository):
capabilities = util.set(('lookup', 'changegroupsubset'))
@@ -766,6 +767,11 @@
update_dirstate = (self.dirstate.parents()[0] == p1)
changes = [files, [], [], [], []]
+ ms = merge_.mergestate(self)
+ for f in changes[0]:
+ if f in ms and ms[f] == 'u':
+ raise util.Abort(_("unresolved merge conflicts "
+ "(see hg resolve)"))
wctx = context.workingctx(self, (p1, p2), text, user, date,
extra, changes)
return self._commitctx(wctx, force, force_editor, empty_ok,
diff --git a/tests/test-add b/tests/test-add
--- a/tests/test-add
+++ b/tests/test-add
@@ -32,6 +32,7 @@
echo % should fail
hg add a
hg st
+hg resolve -m a
hg ci -m merge
echo % issue683
diff --git a/tests/test-commit-unresolved b/tests/test-commit-unresolved
new file mode 100755
--- /dev/null
+++ b/tests/test-commit-unresolved
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+echo "[extensions]" >> $HGRCPATH
+echo "graphlog=" >> $HGRCPATH
+echo "rebase=" >> $HGRCPATH
+
+function addcommit {
+ echo $1 > $1
+ hg add $1
+ hg commit -d "${2} 0" -u test -m $1
+}
+function commit {
+ hg commit -d "${2} 0" -u test -m $1
+}
+
+hg init a
+cd a
+addcommit "A" 0
+addcommit "B" 1
+echo "C" >> A
+commit "C" 2
+
+hg update -C 0
+echo "D" >> A
+commit "D" 3
+
+echo
+echo "% Merging a conflict araises"
+hg merge
+
+echo
+echo "% Correct the conflict without marking the file as resolved"
+echo "ABCD" > A
+hg commit -m "Merged"
+
+echo
+echo "% Mark the conflict as resolved and commit"
+hg resolve -m A
+hg commit -m "Merged"
+
+exit 0
diff --git a/tests/test-commit-unresolved.out b/tests/test-commit-unresolved.out
new file mode 100644
--- /dev/null
+++ b/tests/test-commit-unresolved.out
@@ -0,0 +1,14 @@
+1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+created new head
+
+% Merging a conflict araises
+merging A
+warning: conflicts during merge.
+merging A failed!
+1 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges
+
+% Correct the conflict without marking the file as resolved
+abort: unresolved merge conflicts (see hg resolve)
+
+% Mark the conflict as resolved and commit
diff --git a/tests/test-convert-svn-sink b/tests/test-convert-svn-sink
--- a/tests/test-convert-svn-sink
+++ b/tests/test-convert-svn-sink
@@ -128,6 +128,7 @@
hg --cwd b up -C 2
hg --cwd b merge
hg --cwd b revert -r 2 b
+hg resolve -m b
hg --cwd b ci -d '5 0' -m 'merge'
hg convert -d svn b
diff --git a/tests/test-merge7 b/tests/test-merge7
--- a/tests/test-merge7
+++ b/tests/test-merge7
@@ -43,6 +43,7 @@
three
EOF
rm -f *.orig
+hg resolve -m test.txt
hg commit -m "Merge 1" -d "1000000 0"
# change test-a again
More information about the Mercurial-devel
mailing list