Vincent Lefevre wrote on Mon, 23 Dec 2019 02:21 +00:00: > On 2019-12-21 08:09:46 +0000, Daniel Shahaf wrote: > > Vincent Lefevre wrote on Sat, Dec 21, 2019 at 00:09:09 +0100: > > > There's something wrong with "svn list -v" column alignment when > > > there are author names with more than 8 characters. For instance, > > > with the gcc repository: > > > > > > [...] > > > 279442 jozefl Dec 16 12:02 libgcc/ > > > 278886 jvdelisle Dec 01 23:29 libgfortran/ > > > [...] > > > > As implemented, the width is initially 8 but as soon as a longer name is > > seen, > > subsequent lines will be aligned with that, up to a maximum length of 16. > > > > Do you have a better algorithm to propose? > > cache the maximum length name in the working-copy data.
Let's see. We could cache the value in wc.db. Running 'ls' or 'blame' [the same considerations apply to both] would update the cache; running 'cleanup' would purge it. Two things are not immediately clear to me: - This info is only needed by the cmdline client, not by other library users. This suggests the API should be generic. A per-client cache, maybe? There's already a svn_client_ctx_t::client_name so it's not unprecedented. - What the cache keys should be. wc.db is designed to be shared among multiple WC's, so presumably the cache should be per-wcroot or possibly per-repository? > Another idea: The WC caches the "last changed author" information. When initializing the display width, we could initialize it as though we'd already encountered a line with the longest "last changed author" that's cached in wc.db (possibly for a <handwave>relevant</handwave> subtree). > (To be clear, I'm just brainstorming; I'm not going to implement either of these ideas. Patches welcome.) > Make the minimum width configurable, Currently it is only configurable by changing the constant's value and rebuilding… Oh. I missed it before, but passing -H increases the minimum width to 14. That's not obvious from the --help output and variable names.