Julian Foad wrote on Sun, Dec 01, 2019 at 12:01:09 +0000: > Daniel Shahaf wrote: > > I'd like to get the "is this WC mixed revision?" and "is this WC switched?" > > bits without stat()-ing every single file in the worktree. > > What info do you actually want, functionally? Some info about the WC base > "shape" like "svn info --x-viewspec" gives?
I want to know whether the WC is mixed revision, like I said ☺ But let me give some background about my use-case. I use a shell plugin that shows svn/git information above the shell prompt. The plugin shows the revision number of the working copy checked out in cwd — IIRC, what is shows specifically is the BASE revision of ./ — and I'd like to have an indication that the wc is mixed-revision. At the same time, because the plugin assembles its data whenever a new prompt is drawn, I'd like the data collection to be fast. I assume that solutions that read wc.db but don't look at the on-disk files at all would be sufficiently performant. Furthermore, I need just summary information. The plugin's output is generally limitd to one or two condensed lines (comparable to a customized status line in vim/tmux). Usually it's just a few numbers and boolean indications. Thus, `svnversion` sans text mods is actually a very good fit for my use-case. 'info --x-viewspec' provides a superset of the information `svnversion --no-stat` would provide, at comparable cost, so it'd be an option (more so if it were covered by our compatibility promises). However, I'd have to parse and condense the information myself, which would basically mean implementing a third-party wrapper around `info --x-viewspec` that does exactly what `svnversion --no-stat` would do. I'd rather cut out the middleman. ☺ ---- Not related to svnversion: In my use-case, another thing that'd be nice to have is an overview of the changelists in the working copy — again, without actually doing a tree walk. I can think of two shapes an API for this might take: - An API that provides the list of changelist names, cheaply. ('svn st' and 'svn info' provide this, but they're both expensive.) The list of names could be unsorted. If we were to sort it, perhaps sorting by number of files or by the mtime of of member files [either nodes.last_mod_time or on-disk mtime] would be useful. - An API such as «svn st --files-that-are-in-a-changelist». Unlike --changelist, this would show information about _all_ changelists, not just one. This would basically be the opposite of issue #3348. (I am reminded of hg revspecs¹.) Cheers, Daniel ¹ hg revspecs is a DSL for specifying sets of revisions.