changeset 11485:b602a95c21ec stable

subrepo: refuse to commit subrepos if .hgsub is excluded (issue2232)
author Matt Mackall <mpm@selenic.com>
date Thu, 01 Jul 2010 11:20:13 -0500
parents 44b4873ea59b
children d3c3e2fdeb0c
files mercurial/localrepo.py tests/test-subrepo tests/test-subrepo.out
diffstat 3 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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