def get_content_length(self): """Retrieve byte size of a file. Return `None` for a folder. (wraps ``fs.file_length``) """ if self.isdir: return None return fs.file_length(self.root, self._scoped_path_utf8, self.pool())
def do_ls(self, arg): """list the contents of the current directory or provided path""" parent = self.path if not len(arg): # no arg -- show a listing for the current directory. entries = fs.dir_entries(self.root, self.path) else: # arg? show a listing of that path. newpath = self._parse_path(arg) kind = fs.check_path(self.root, newpath) if kind == core.svn_node_dir: parent = newpath entries = fs.dir_entries(self.root, parent) elif kind == core.svn_node_file: parts = self._path_to_parts(newpath) name = parts.pop(-1) parent = self._parts_to_path(parts) print(parent + ':' + name) tmpentries = fs.dir_entries(self.root, parent) if not tmpentries.get(name, None): return entries = {} entries[name] = tmpentries[name] else: print("Path '%s' not found." % newpath) return keys = sorted(entries.keys()) print(" REV AUTHOR NODE-REV-ID SIZE DATE NAME") print( "----------------------------------------------------------------------------" ) for entry in keys: fullpath = parent + '/' + entry size = '' is_dir = fs.is_dir(self.root, fullpath) if is_dir: name = entry + '/' else: size = str(fs.file_length(self.root, fullpath)) name = entry node_id = fs.unparse_id(entries[entry].id) created_rev = fs.node_created_rev(self.root, fullpath) author = fs.revision_prop(self.fs_ptr, created_rev, core.SVN_PROP_REVISION_AUTHOR) if not author: author = "" date = fs.revision_prop(self.fs_ptr, created_rev, core.SVN_PROP_REVISION_DATE) if not date: date = "" else: date = self._format_date(date) print("%6s %8s %12s %8s %12s %s" % (created_rev, author[:8], node_id, size, date, name))
def do_ls(self, arg): """list the contents of the current directory or provided path""" parent = self.path if not len(arg): # no arg -- show a listing for the current directory. entries = fs.dir_entries(self.root, self.path) else: # arg? show a listing of that path. newpath = self._parse_path(arg) kind = fs.check_path(self.root, newpath) if kind == core.svn_node_dir: parent = newpath entries = fs.dir_entries(self.root, parent) elif kind == core.svn_node_file: parts = self._path_to_parts(newpath) name = parts.pop(-1) parent = self._parts_to_path(parts) print(parent + ':' + name) tmpentries = fs.dir_entries(self.root, parent) if not tmpentries.get(name, None): return entries = {} entries[name] = tmpentries[name] else: print("Path '%s' not found." % newpath) return keys = sorted(entries.keys()) print(" REV AUTHOR NODE-REV-ID SIZE DATE NAME") print("----------------------------------------------------------------------------") for entry in keys: fullpath = parent + '/' + entry size = '' is_dir = fs.is_dir(self.root, fullpath) if is_dir: name = entry + '/' else: size = str(fs.file_length(self.root, fullpath)) name = entry node_id = fs.unparse_id(entries[entry].id) created_rev = fs.node_created_rev(self.root, fullpath) author = fs.revision_prop(self.fs_ptr, created_rev, core.SVN_PROP_REVISION_AUTHOR) if not author: author = "" date = fs.revision_prop(self.fs_ptr, created_rev, core.SVN_PROP_REVISION_DATE) if not date: date = "" else: date = self._format_date(date) print("%6s %8s %12s %8s %12s %s" % (created_rev, author[:8], node_id, size, date, name))
def _log_helper(self, path, rev, lockinfo): rev_root = fs.revision_root(self.fs_ptr, rev) copyfrom_rev, copyfrom_path = fs.copied_from(rev_root, path) date, author, msg, revprops, changes = self._revinfo(rev) if fs.is_file(rev_root, path): size = fs.file_length(rev_root, path) else: size = None return Revision(rev, date, author, msg, size, lockinfo, path, copyfrom_path and _cleanup_path(copyfrom_path), copyfrom_rev)
def _log_helper(svnrepos, rev, path, pool): rev_root = fs.revision_root(svnrepos.fs_ptr, rev, pool) # Was this path@rev the target of a copy? copyfrom_rev, copyfrom_path = fs.copied_from(rev_root, path, pool) # Assemble our LogEntry datestr, author, msg = _fs_rev_props(svnrepos.fs_ptr, rev, pool) date = _datestr_to_date(datestr, pool) if fs.is_file(rev_root, path, pool): size = fs.file_length(rev_root, path, pool) else: size = None entry = Revision(rev, date, author, msg, size, path, copyfrom_path and _cleanup_path(copyfrom_path), copyfrom_rev) return entry
def get_logs(svnrepos, full_name, rev, files): fsroot = svnrepos._getroot(rev) subpool = core.svn_pool_create(svnrepos.pool) for file in files: core.svn_pool_clear(subpool) path = _fs_path_join(full_name, file.name) rev = _get_last_history_rev(fsroot, path, subpool) datestr, author, msg = _fs_rev_props(svnrepos.fs_ptr, rev, subpool) date = _datestr_to_date(datestr, subpool) file.rev = str(rev) file.date = date file.author = author file.log = msg if file.kind == vclib.FILE: file.size = fs.file_length(fsroot, path, subpool) core.svn_pool_destroy(subpool)
def dirlogs(self, path_parts, rev, entries, options): path = self._getpath(path_parts) if self.itemtype(path_parts, rev) != vclib.DIR: # does auth-check raise vclib.Error("Path '%s' is not a directory." % path) fsroot = self._getroot(self._getrev(rev)) rev = self._getrev(rev) for entry in entries: entry_path_parts = path_parts + [entry.name] if not vclib.check_path_access(self, entry_path_parts, entry.kind, rev): continue path = self._getpath(entry_path_parts) entry_rev = _get_last_history_rev(fsroot, path) date, author, msg, revprops, changes = self._revinfo(entry_rev) entry.rev = str(entry_rev) entry.date = date entry.author = author entry.log = msg if entry.kind == vclib.FILE: entry.size = fs.file_length(fsroot, path) lock = fs.get_lock(self.fs_ptr, path) entry.lockinfo = lock and lock.owner or None
def get_content_length(self): if self.isdir: return None return fs.file_length(self.root, self.scoped_path)
def filesize(self, path_parts, rev): path = self._getpath(path_parts) if self.itemtype(path_parts, rev) != vclib.FILE: # does auth-check raise vclib.Error("Path '%s' is not a file." % path) fsroot = self._getroot(self._getrev(rev)) return fs.file_length(fsroot, path)
def get_content_length(self): if self.isdir: return None return fs.file_length(self.root, self._scoped_path_utf8, self.pool())