[PATCH] subrepo: Force updating subrepos if using overwrite option

Saint Germain saintger at gmail.com
Sat Feb 6 13:59:41 CST 2010


# HG changeset patch
# User Saint Germain <saintger at gmail.com>
# Date 1265479044 -3600
# Node ID d3e96cbbb09998c04427ade476a0a0fb27b989a1
# Parent  b9e44cc97355ff27e05f6cd384061fc12731cec0
subrepo: Force updating subrepos if using overwrite option

Even if .hgsubstate doesn't need updating, subrepos may be 'dirty'. So if using -C (overwrite)
option, add a check for 'dirty' subrepos and if found, force the update.

diff -r b9e44cc97355 -r d3e96cbbb099 mercurial/merge.py
--- a/mercurial/merge.py	Wed Feb 03 16:09:19 2010 +0000
+++ b/mercurial/merge.py	Sat Feb 06 18:57:24 2010 +0100
@@ -186,6 +186,12 @@
             if n == m2[f] or m2[f] == a: # same or local newer
                 if m1.flags(f) != rflags:
                     act("update permissions", "e", f, rflags)
+                # in case of subrepos, update if overwrite and subrepos is dirty
+                if overwrite and f == '.hgsubstate':
+                    for s in p1.substate:
+                        if p1.sub(s).dirty(): # if dirty, force update
+                            act("remote is newer", "g", f, rflags)
+                            break
             elif n == a: # remote newer
                 act("remote is newer", "g", f, rflags)
             else: # both changed
diff -r b9e44cc97355 -r d3e96cbbb099 tests/test-subrepo
--- a/tests/test-subrepo	Wed Feb 03 16:09:19 2010 +0000
+++ b/tests/test-subrepo	Sat Feb 06 18:57:24 2010 +0100
@@ -161,4 +161,19 @@
 hg up 5
 hg merge 4    # try to merge default into br again
 
+echo % test repositoy clean/overwrite updating
+hg init mercurial
+cd mercurial
+hg init nested
+echo test > nested/foo
+hg -R nested add nested/foo
+echo nested = nested > .hgsub
+hg add .hgsub
+hg ci -mtest
+echo modification > nested/foo
+hg -R nested commit -mmodif
+hg update -C
+cd ..
+rm -rf mercurial
+
 exit 0
diff -r b9e44cc97355 -r d3e96cbbb099 tests/test-subrepo.out
--- a/tests/test-subrepo.out	Wed Feb 03 16:09:19 2010 +0000
+++ b/tests/test-subrepo.out	Sat Feb 06 18:57:24 2010 +0100
@@ -243,3 +243,6 @@
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
+% test repositoy clean/overwrite updating
+committing subrepository nested
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved


More information about the Mercurial-devel mailing list