subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Shahaf <danie...@apache.org>
Subject Re: Feature Request: svn upgrade [--check][--check-current]
Date Fri, 02 Dec 2016 17:11:04 GMT
Marc Pawlowsky wrote on Fri, Dec 02, 2016 at 11:50:14 -0500:
> There is a lot of effort and hacks on determining what SVN database
> version is being used on the working copy.  Usually resorting to
> examining the internal contents of a .svn/* file.

The incantation is:

    format_number=`head -n1 .svn/format`
    if [ "$format_number" -eq 12 ]; then
      format_number=`sqlite3 .svn/wc.db 'pragma user_version;'`
    fi

This inspects .svn directly, and as such is *not* guaranteed to be
forward compatible.  (We don't anticipate breaking it, but we may.)

See SVN_WC__VERSION (in wc.h) for the format-number-to-minor-version map.

> For future releases it would be nice if there was a command to display
> if the current working copy is at the same level as the svn version
> being used, and if not if it is upgradable.
> 
> The use case is to be able to detect early on in a build process if
> the wrong version of SVN was used.
> 

Couldn't you run, say, 'svn info >/dev/null' and see whether it gives
error E155036 or not?

    % ./tools/dev/which-error.py E155036
    00155036  SVN_ERR_WC_UPGRADE_REQUIRED

Going through your scenarios:

> svn upgrade --check-current .
> CURRENT: yes
> UPGRADABLE: yes
> VERSION: 20
> exit code 0 to indicate no upgrade is needed

'svn info' will exit 0.

> svn upgrade --check-current .
> CURRENT: NO
> UPGRADABLE: yes
> VERSION: 19
> exit code 1 to indicate  upgrade is needed

'svn info' will report E155036 (and 'svn upgrade' will succeed).

> svn upgrade --check-current .
> CURRENT: NO
> UPGRADABLE: no
> VERSION: unknown
> exit code 2 to indicate  upgrade cannot be performed

Only happens in corner cases (e.g.,
<https://subversion.apache.org/docs/release-notes/1.8.html#wc-upgrade>).
'svn info' will report E155036 and 'svn upgrade' will error out.

I'm not sure whether we have today a way to distinguish "non-current,
non-upgradeable" from "non-current, upgradeable", without actually
running 'svn upgrade'.  Perhaps others can speak to that.

>

To be clear, I'm not opposed to adding such functionality; I'm simply
trying to understand why the use-case can't be addressed with existing
features.

Cheers,

Daniel

Mime
View raw message