24
24
from bzrlib.branch import Branch
25
from bzrlib.bzrdir import BzrDirMetaFormat1
25
26
from bzrlib.osutils import abspath
27
from bzrlib.repository import RepositoryFormatKnit1
26
28
from bzrlib.tests.blackbox import ExternalBase
27
29
from bzrlib.uncommit import uncommit
30
from bzrlib.workingtree import WorkingTree
30
33
class TestPush(ExternalBase):
80
83
self.assertEqual('0 revision(s) pushed.\n', err)
81
84
b2 = bzrlib.branch.Branch.open('pushed-location')
82
85
self.assertEndsWith(b2.base, 'pushed-location/')
87
def test_push_new_branch_revision_count(self):
88
# bzr push of a branch with revisions to a new location
89
# should print the number of revisions equal to the length of the
91
t = self.make_branch_and_tree('tree')
92
self.build_tree(['tree/file'])
96
out, err = self.run_bzr('push', 'pushed-to')
98
self.assertEqual('', out)
99
self.assertEqual('1 revision(s) pushed.\n', err)
101
def test_push_only_pushes_history(self):
102
# Knit branches should only push the history for the current revision.
103
format = BzrDirMetaFormat1()
104
format.repository_format = RepositoryFormatKnit1()
105
shared_repo = self.make_repository('repo', format=format, shared=True)
106
shared_repo.set_make_working_trees(True)
108
def make_shared_tree(path):
109
shared_repo.bzrdir.root_transport.mkdir(path)
110
shared_repo.bzrdir.create_branch_convenience('repo/' + path)
111
return WorkingTree.open('repo/' + path)
112
tree_a = make_shared_tree('a')
113
self.build_tree(['repo/a/file'])
115
tree_a.commit('commit a-1', rev_id='a-1')
116
f = open('repo/a/file', 'ab')
117
f.write('more stuff\n')
119
tree_a.commit('commit a-2', rev_id='a-2')
121
tree_b = make_shared_tree('b')
122
self.build_tree(['repo/b/file'])
124
tree_b.commit('commit b-1', rev_id='b-1')
126
self.assertTrue(shared_repo.has_revision('a-1'))
127
self.assertTrue(shared_repo.has_revision('a-2'))
128
self.assertTrue(shared_repo.has_revision('b-1'))
130
# Now that we have a repository with shared files, make sure
131
# that things aren't copied out by a 'push'
133
self.run_bzr('push', '../../push-b')
134
pushed_tree = WorkingTree.open('../../push-b')
135
pushed_repo = pushed_tree.branch.repository
136
self.assertFalse(pushed_repo.has_revision('a-1'))
137
self.assertFalse(pushed_repo.has_revision('a-2'))
138
self.assertTrue(pushed_repo.has_revision('b-1'))