[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Supporting multiple WC formats

From: Branko Čibej <brane_at_apache.org>
Date: Thu, 14 Sep 2017 06:01:31 +0200

As you may have noticed, I started implementing support for multiple WC
formats on the better-pristines branch, as a prelude to adding support
for compressed pristines without forcing users to upgrade all their
working copies. There's an overview in the branch readme file, but the
basic idea is this:

  * the client will support more than one WC format
  * when working copies are created or upgraded, the default is always
    the latest supported format
  * 'svn checkout' and 'svn upgrade' accept a --compatible-version
    option that says which format of WC to create/upgrade to (the option
    name and semantics are the same as svnadmin's)
  * when update/switch create new externals working copies, they will
    use the parent's format.

The implementation of 'svn upgrade' is fairly straight-forward, but I've
still run into a bit of a conundrum; the question is this: since 'svn
upgrade' can theoretically be performed on an external WC, should we
support working copies with different formats in the top level and the
externals? I haven't checked if we currently do, though obviously, as
things stand now, upgrading only a subtree doesn't make much sense,
since the top-level format would still not be supported.

The other question that's popped up is more technical: how to
communicate the WC format down the library stack (for creating externals
working copies) during checkout/upgrade/switch. The only structure that
currently holds the format number is svn_wc__wcroot_t, which is strictly
private to libsvn_wc and not exposed anywhere else. The obvious solution
of recording the format in svn_wc_context_t seems like a bit of a
layering violation to me, but on the other hand it's the only bit of
context that's available to libsvn_client.

Any ideas will be most welcome.

-- Brane
Received on 2017-09-14 06:01:38 CEST

This is an archived mail posted to the Subversion Dev mailing list.