26
29
is_ancestor, MultipleRevisionSources,
28
from bzrlib.tests import TestCaseWithTransport
31
from bzrlib.tests import TestCase, TestCaseWithTransport
29
32
from bzrlib.trace import mutter
30
33
from bzrlib.workingtree import WorkingTree
67
70
tree2.commit("Commit four", rev_id="b@u-0-3")
68
71
tree2.commit("Commit five", rev_id="b@u-0-4")
69
72
revisions_2 = br2.revision_history()
73
self.assertEquals(revisions_2[-1], 'b@u-0-4')
72
tree1.add_pending_merge(revisions_2[4])
73
self.assertEquals(revisions_2[4], 'b@u-0-4')
75
tree1.merge_from_branch(br2)
74
76
tree1.commit("Commit six", rev_id="a@u-0-3")
75
77
tree1.commit("Commit seven", rev_id="a@u-0-4")
76
78
tree2.commit("Commit eight", rev_id="b@u-0-5")
79
self.assertEquals(br2.revision_history()[-1], 'b@u-0-5')
79
tree1.add_pending_merge(br2.revision_history()[5])
81
tree1.merge_from_branch(br2)
80
82
tree1.commit("Commit nine", rev_id="a@u-0-5")
81
# DO NOT FETCH HERE - we WANT a GHOST.
83
tree2.add_pending_merge(br1.revision_history()[4])
83
# DO NOT MERGE HERE - we WANT a GHOST.
84
tree2.add_parent_tree_id(br1.revision_history()[4])
84
85
tree2.commit("Commit ten - ghost merge", rev_id="b@u-0-6")
155
156
wt2.commit("Commit twelve", rev_id="b@u-0-8")
156
157
wt2.commit("Commit thirtteen", rev_id="b@u-0-9")
158
self.br1.fetch(self.br2)
159
wt1.add_pending_merge(self.br2.revision_history()[6])
159
wt1.merge_from_branch(self.br2)
160
160
wt1.commit("Commit fourtten", rev_id="a@u-0-6")
162
self.br2.fetch(self.br1)
163
wt2.add_pending_merge(self.br1.revision_history()[6])
162
wt2.merge_from_branch(self.br1)
164
163
wt2.commit("Commit fifteen", rev_id="b@u-0-10")
166
165
from bzrlib.revision import MultipleRevisionSources
236
235
br1, br2 = make_branches(self)
237
236
source = MultipleRevisionSources(br1.repository, br2.repository)
238
combined_1 = combined_graph(br1.last_revision(),
237
combined_1 = combined_graph(br1.last_revision(),
239
238
br2.last_revision(), source)
240
239
combined_2 = combined_graph(br2.last_revision(),
241
240
br1.last_revision(), source)
288
287
# in repo 2, which has A, the revision_graph()
289
288
# should return A and B both.
290
289
tree_1 = self.make_branch_and_tree('1')
291
tree_1.add_pending_merge('A')
290
tree_1.set_parent_ids(['A'], allow_leftmost_as_ghost=True)
292
291
tree_1.commit('foo', rev_id='B', allow_pointless=True)
293
292
tree_2 = self.make_branch_and_tree('2')
294
293
tree_2.commit('bar', rev_id='A', allow_pointless=True)
297
296
self.assertEqual({'B':['A'],
299
298
source.get_revision_graph('B'))
301
class TestRevisionAttributes(TestCaseWithTransport):
302
"""Test that revision attributes are correct."""
304
def test_revision_accessors(self):
305
"""Make sure the values that come out of a revision are the same as the ones that go in.
307
tree1 = self.make_branch_and_tree("br1")
310
tree1.commit(message="quux", allow_pointless=True, committer="jaq",
311
revprops={'empty':'',
314
'multiline':'foo\nbar\n\n'
316
assert len(tree1.branch.revision_history()) > 0
317
rev_a = tree1.branch.repository.get_revision(tree1.branch.last_revision())
319
tree2 = self.make_branch_and_tree("br2")
320
tree2.commit(message=rev_a.message,
321
timestamp=rev_a.timestamp,
322
timezone=rev_a.timezone,
323
committer=rev_a.committer,
324
rev_id=rev_a.revision_id,
325
revprops=rev_a.properties,
326
allow_pointless=True, # there's nothing in this commit
329
rev_b = tree2.branch.repository.get_revision(tree2.branch.last_revision())
331
self.assertEqual(rev_a.message, rev_b.message)
332
self.assertEqual(rev_a.timestamp, rev_b.timestamp)
333
self.assertEqual(rev_a.timezone, rev_b.timezone)
334
self.assertEqual(rev_a.committer, rev_b.committer)
335
self.assertEqual(rev_a.revision_id, rev_b.revision_id)
336
self.assertEqual(rev_a.properties, rev_b.properties)