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

Reply via email to