subrepo: refuse to commit subrepos if .hgsub is excluded (
issue2232)
--- a/mercurial/localrepo.py Thu Jul 01 11:20:08 2010 -0500
+++ b/mercurial/localrepo.py Thu Jul 01 11:20:13 2010 -0500
@@ -826,8 +826,13 @@
removedsubs.discard(s)
if match(s) and wctx.sub(s).dirty():
subs.append(s)
- if (subs or removedsubs) and '.hgsubstate' not in changes[0]:
- changes[0].insert(0, '.hgsubstate')
+ if (subs or removedsubs):
+ # is hgsub modified and not included?
+ if (not match('.hgsub') and
+ '.hgsub' in (wctx.modified() + wctx.added())):
+ raise util.Abort("can't commit subrepos without .hgsub")
+ if '.hgsubstate' not in changes[0]:
+ changes[0].insert(0, '.hgsubstate')
# make sure all explicit patterns are matched
if not force and match.files():
--- a/tests/test-subrepo Thu Jul 01 11:20:08 2010 -0500
+++ b/tests/test-subrepo Thu Jul 01 11:20:13 2010 -0500
@@ -15,12 +15,15 @@
hg add .hgsub
hg init s
echo a > s/a
+
+# issue2232 - committing a subrepo without .hgsub
+hg ci -mbad s
+
hg -R s ci -Ams0
hg sum
hg ci -m1
# issue 2022 - update -C
-
echo b > s/a
hg sum
hg co -C 1
--- a/tests/test-subrepo.out Thu Jul 01 11:20:08 2010 -0500
+++ b/tests/test-subrepo.out Thu Jul 01 11:20:13 2010 -0500
@@ -1,6 +1,7 @@
% first revision, no sub
adding a
% add first sub
+abort: can't commit subrepos without .hgsub
adding a
parent: 0:f7b1eb17ad24 tip
0