def checkout(self, sha=None): self._fetch() print "# Checkout repo %s @ %s => %s.."%(self.remote_uri,sha,self.path) self._init_subrepos(sha) target = self['HEAD'] if sha: target = self[sha] target_tree = target.tree index = Index(self.index_path()) for e_path,e_mode,e_sha in index.changes_from_tree(self.object_store, target_tree, want_unchanged=True): e_source = (e_path[1],e_mode[1],e_sha[1]) e_target = (e_path[0],e_mode[0],e_sha[0]) e_to_checkout = None if e_source[0] and e_target[0]: if not os.path.exists(os.path.join(self.path, e_target[0])): e_to_checkout = ("A",e_target) elif e_source[2] != e_target[2]: e_to_checkout = ("U",e_target) elif not e_target[0]: print "D %s"%(os.path.join(self.path, e_source[0])) if stat.S_ISREG(e_source[1]): os.unlink(os.path.join(self.path, e_source[0])) del index[e_source[0]] else: e_to_checkout = ("A",e_target) if e_to_checkout: print "%s %s"%(e_to_checkout[0],os.path.join(self.path,e_to_checkout[1][0])) self._checkout_entry(index, *e_to_checkout[1]) self._init_subrepos(sha) for subrepo in self.subrepo.values(): subrepo[1].checkout(subrepo[0])
def open_index(self): """Open the index for this repository. :raise NoIndexPresent: If no index is present :return: The matching `Index` """ from dulwich.index import Index if not self.has_index(): raise NoIndexPresent() return Index(self.index_path())
def run(self, args): opts, args = getopt(args, "", []) if args == []: print("Usage: dulwich dump-index FILENAME") sys.exit(1) filename = args[0] idx = Index(filename) for o in idx: print(o, idx[o])
def status(self, sha=None): print "# Status.." target = self['HEAD'] if sha: target = self[sha] target_tree = target.tree index = Index(self.index_path()) for e_path,e_mode,e_sha in index.changes_from_tree(self.object_store, target_tree, want_unchanged=True): e_source = (e_path[0],e_mode[0],e_sha[0]) e_target = (e_path[1],e_mode[1],e_sha[1]) if e_source[0] and e_target[0]: if not os.path.exists(os.path.join(self.path, e_source[0])): print "D %s"%(os.path.join(self.path, e_source[0])) elif e_source[2] != e_target[2]: print "M %s"%(os.path.join(self.path, e_source[0])) elif not e_target[0]: print "D %s"%(os.path.join(self.path, e_source[0])) else: print "A %s"%(os.path.join(self.path, e_target[0]))
def __init__(self, bzrdir, repo, branch): self.basedir = bzrdir.transport.base self.bzrdir = bzrdir self.repository = repo self._branch = branch self._transport = bzrdir.transport self.controldir = urlutils.join(self.repository._git.path, 'bzr') try: os.makedirs(self.controldir) os.makedirs(os.path.join(self.controldir, 'lock')) except OSError: pass self._control_files = lockable_files.LockableFiles( transport.get_transport(self.controldir), 'lock', lockdir.LockDir) self._format = GitWorkingTreeFormat() self.index = Index( os.path.join(self.repository._git.controldir(), "index"))
def get_simple_index(self, name): return Index(os.path.join(self.datadir, name))
def open_index(self): """Open the index for this repository.""" from dulwich.index import Index if not self.has_index(): raise NoIndexPresent() return Index(self.index_path())
def __enter__(self): self._file = GitFile(self._path, 'wb') self._index = Index(self._path) return self._index
def __enter__(self): # TODO(jelmer): This can raise dulwich.file.FileLocked; # https://github.com/jelmer/xandikos/issues/66 self._file = GitFile(self._path, 'wb') self._index = Index(self._path) return self._index
def open_index(self): """Open the index for this repository.""" from dulwich.index import Index return Index(self.index_path())