[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