Search code examples
svnsvn-externalssvn-propset

How to use subversion's propset against a URL?


Is it possible to manipulate a subversion property such as svn:externals via a URL only? (i.e. without having a working copy.)

I'd like a script that pins svn:externals to a particular revision given a subversion URL, but this seems to be impossible:

$ svn propset foo bar https://example.com/svn/myproject/trunk
svn: Setting property on non-local target 'https://example.com/svn/myproject/trunk' needs a base revision

$ svn propset foo bar -r HEAD https://example.com/svn/myproject/trunk
svn: Try 'svn help' for more info
svn: Cannot specify revision for setting versioned property 'foo'

$ svn propset foo bar --revprop -r HEAD https://example.com/svn/myproject/trunk
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'foo': 
could not remove a property

(I get the same results if I use an actual revision number instead of HEAD as well.)


Solution

  • No. Changing a property on a file is like changing the file itself -- you need a working directory. There are a few Subversion commands that change the commit without requiring a working copy: svn cp, svn mkdir, and svn delete. Everything else needs a working directory in order to make changes.

    By the way, you can make changes on revision properties without a working copy. Revision properties are things like the commit comment (svn:log), the committer's ID (svn:author), and the time of the commit (svn:date).