On 13. 6. 2026 21:49, Timofei Zhakov wrote:
First of all, I find it a bit weird that there is no easy way to
recover the real node kind (not the one in subversion but in the
system's FS) from svn_client_status6(). Although it is present in the
WC API (svn_wc_status3_t->actual_kind), it isn't in the client
equivalent. There is only a hacky way to
use svn_client_status_t->backwards_compatibility_baton which is a
void* that actually describes a svn_wc_status3_t so one could use the
field from it (if they really know what they're doing).
subversion/include/svn_wc.h:svn_wc_status3_t:
[[[
/** The actual kind of the node in the working copy. May differ from
* @a kind on obstructions, deletes, etc. #svn_node_unknown if
unavailable.
*
* @since New in 1.9 */
svn_node_kind_t actual_kind;
]]]
I personally don't see a real reason to not have it so if nobody
objects I'd just add it there.
One of Subversion's core design principles is that working copy info
should be abstracted from client operations. There was even an effort to
remove "everything" from the svn_wc.h header, but we can't do that
because of compatibility guarantees.
Of course, over time we've added all sorts of loopholes to get at WC
data anyway – the "WC compatibility version" being the latest example.
Still, even so we're keeping this in the svn_client API. Though I do
have my doubts about exposing the WC format version in this way, I don't
see why it's necessary.
There is also an idea that I think we might consider to include last
modified time (actual_mtime) into the status structure of both WC and
client. We already have this information as an svn_io_dirent2_t when
the status is assembled in libsvn_wc/status.c so it doesn't cost us
anything to do and could potentially give users more idea about a node.
Why do you need mtime etc. in the client status in the first place?
Clients can't use it to guess whether a file was modified, we have more
complex underlying mechanisms for that. So let's start by discussing
what you want to achieve before you modify the public API.
-- Brane