bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 2466.7.3
by Robert Collins Create bzrlib.branchbuilder. | 1 | # Copyright (C) 2007 Canonical Ltd
 | 
| 2 | #
 | |
| 3 | # This program is free software; you can redistribute it and/or modify
 | |
| 4 | # it under the terms of the GNU General Public License as published by
 | |
| 5 | # the Free Software Foundation; either version 2 of the License, or
 | |
| 6 | # (at your option) any later version.
 | |
| 7 | #
 | |
| 8 | # This program is distributed in the hope that it will be useful,
 | |
| 9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| 10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| 11 | # GNU General Public License for more details.
 | |
| 12 | #
 | |
| 13 | # You should have received a copy of the GNU General Public License
 | |
| 14 | # along with this program; if not, write to the Free Software
 | |
| 15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| 16 | ||
| 17 | """Utility for create branches with particular contents."""
 | |
| 18 | ||
| 2466.7.6
by Robert Collins Add BranchBuilder.build_commit. | 19 | from bzrlib import bzrdir, errors, memorytree | 
| 2466.7.3
by Robert Collins Create bzrlib.branchbuilder. | 20 | |
| 21 | ||
| 22 | class BranchBuilder(object): | |
| 2466.7.7
by Robert Collins Document basic usage. | 23 | """A BranchBuilder aids creating Branches with particular shapes. | 
| 24 |     
 | |
| 25 |     The expected way to use BranchBuilder is to construct a
 | |
| 26 |     BranchBuilder on the transport you want your branch on, and then call
 | |
| 27 |     appropriate build_ methods on it to get the shape of history you want.
 | |
| 28 | ||
| 29 |     For instance:
 | |
| 30 |       builder = BranchBuilder(self.get_transport().clone('relpath'))
 | |
| 31 |       builder.build_commit()
 | |
| 32 |       builder.build_commit()
 | |
| 33 |       builder.build_commit()
 | |
| 34 |       branch = builder.get_branch()
 | |
| 35 |     """
 | |
| 2466.7.3
by Robert Collins Create bzrlib.branchbuilder. | 36 | |
| 2466.7.10
by Robert Collins Add a format parameter to BranchBuilder. | 37 | def __init__(self, transport, format=None): | 
| 2466.7.5
by Robert Collins Better docstring for BranchBuilder.__init__. | 38 | """Construct a BranchBuilder on transport. | 
| 39 |         
 | |
| 40 |         :param transport: The transport the branch should be created on.
 | |
| 41 |             If the path of the transport does not exist but its parent does
 | |
| 42 |             it will be created.
 | |
| 2466.7.10
by Robert Collins Add a format parameter to BranchBuilder. | 43 |         :param format: The name of a format in the bzrdir format registry
 | 
| 44 |             for the branch to be built.
 | |
| 2466.7.5
by Robert Collins Better docstring for BranchBuilder.__init__. | 45 |         """
 | 
| 2466.7.4
by Robert Collins Add BranchBuilder.get_branch(). | 46 | if not transport.has('.'): | 
| 47 | transport.mkdir('.') | |
| 2466.7.10
by Robert Collins Add a format parameter to BranchBuilder. | 48 | if format is None: | 
| 49 | format = 'default' | |
| 2466.7.4
by Robert Collins Add BranchBuilder.get_branch(). | 50 | self._branch = bzrdir.BzrDir.create_branch_convenience(transport.base, | 
| 2466.7.10
by Robert Collins Add a format parameter to BranchBuilder. | 51 | format=bzrdir.format_registry.make_bzrdir(format)) | 
| 2466.7.4
by Robert Collins Add BranchBuilder.get_branch(). | 52 | |
| 2466.7.6
by Robert Collins Add BranchBuilder.build_commit. | 53 | def build_commit(self): | 
| 54 | """Build a commit on the branch.""" | |
| 55 | tree = memorytree.MemoryTree.create_on_branch(self._branch) | |
| 56 | tree.lock_write() | |
| 2466.7.9
by Robert Collins Return the commited revision id from BranchBuilder.build_commit to save later instrospection. | 57 | try: | 
| 58 | tree.add('') | |
| 59 | return tree.commit('commit %d' % (self._branch.revno() + 1)) | |
| 60 | finally: | |
| 61 | tree.unlock() | |
| 2466.7.6
by Robert Collins Add BranchBuilder.build_commit. | 62 | |
| 2466.7.4
by Robert Collins Add BranchBuilder.get_branch(). | 63 | def get_branch(self): | 
| 64 | """Return the branch created by the builder.""" | |
| 65 | return self._branch |