class Repository(): def __init__(self, directory = None, server_port = 10128): self._initialize_bazaar(directory, server_port) def _initialize_bazaar(self, directory, server_port): self._server_port = server_port if directory is None: directory = os.getcwd() self._working_tree = workingtree.WorkingTree.open(directory) self._initialize_bazaar_server(directory, server_port) def _initialize_bazaar_server(self, directory, server_port): from bzrlib import urlutils from bzrlib.transport import get_transport from bzrlib.transport.chroot import ChrootServer url = urlutils.local_path_to_url(directory) url = 'readonly+' + url print url chroot_server = ChrootServer(get_transport(url)) chroot_server.setUp() t = get_transport(chroot_server.get_url()) print chroot_server.get_url() self._bazaar_server = SmartTCPServer( t, 'localhost', server_port) self._bazaar_server.start_background_thread() def close(self): self._bazaar_server.stop_background_thread() def pull(self, pull_port): from bzrlib.branch import Branch other_branch = Branch.open( 'bzr://localhost:'+str(pull_port)+'/') self._working_tree.merge_from_branch(other_branch) changes = self._working_tree.changes_from( self._working_tree.basis_tree()) print "%s files modified, %s added, %s removed" % ( len(changes.modified), len(changes.added), len(changes.removed))
def _initialize_bazaar_server(self, directory, server_port): from bzrlib import urlutils from bzrlib.transport import get_transport from bzrlib.transport.chroot import ChrootServer url = urlutils.local_path_to_url(directory) url = 'readonly+' + url print url chroot_server = ChrootServer(get_transport(url)) chroot_server.setUp() t = get_transport(chroot_server.get_url()) print chroot_server.get_url() self._bazaar_server = SmartTCPServer( t, 'localhost', server_port) self._bazaar_server.start_background_thread()