- ensure we include for dependencies when we do a stamp, add an option

to filter_for_lineage
This commit is contained in:
Mike Bayer 2014-11-23 10:42:39 -05:00
parent 69427188e6
commit 6b0b54b35b
3 changed files with 16 additions and 6 deletions

View File

@ -341,7 +341,8 @@ class RevisionMap(object):
(revision.revision, check_branch))
return revision
def filter_for_lineage(self, targets, check_against):
def filter_for_lineage(
self, targets, check_against, include_dependencies=False):
id_, branch_label = self._resolve_revision_number(check_against)
shares = []
@ -354,9 +355,11 @@ class RevisionMap(object):
return [
tg for tg in targets
if self._shares_lineage(tg, shares)]
if self._shares_lineage(
tg, shares, include_dependencies=include_dependencies)]
def _shares_lineage(self, target, test_against_revs):
def _shares_lineage(
self, target, test_against_revs, include_dependencies=False):
if not test_against_revs:
return True
if not isinstance(target, Revision):
@ -372,9 +375,9 @@ class RevisionMap(object):
return bool(
set(self._get_descendant_nodes([target],
include_dependencies=False))
include_dependencies=include_dependencies))
.union(self._get_ancestor_nodes([target],
include_dependencies=False))
include_dependencies=include_dependencies))
.intersection(test_against_revs)
)

View File

@ -329,7 +329,7 @@ class ScriptDirectory(object):
# filter for lineage will resolve things like
# branchname@base, version@base, etc.
filtered_heads = self.revision_map.filter_for_lineage(
heads, revision)
heads, revision, include_dependencies=True)
dest = self.get_revision(revision)

View File

@ -457,6 +457,13 @@ class DependsOnBranchTestOne(MigrationTest):
head.update_to_step(self.down_(self.d1))
eq_(head.heads, set([self.c2.revision]))
def test_stamp_across_dependency(self):
heads = [self.e1.revision, self.c2.revision]
head = HeadMaintainer(mock.Mock(), heads)
for step in self.env._stamp_revs(self.b1.revision, heads):
head.update_to_step(step)
eq_(head.heads, set([self.b1.revision]))
class DependsOnBranchTestTwo(MigrationTest):
@classmethod