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.)
Yes, although it's a bit of a hack; svn propedit can change URL targets:
svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"
You can use the svnmucc
command to non-interactively set properties of an URL such as svn:externals
.
Example:
$ svnmucc --root-url https://example.com/svn -m 'reference other/yap' \
propset svn:externals "^/otherproject/tag/xyz other
^/yetanother/tag/123 yap" myproject/trunk
Note that svnmucc
also supports other commands besides propset
and it is possible to chain multiple commands in one call (hence the name). The result is just one changeset.
The svnmucc
command is part of the subversion source package and usually available via the distribution's package manager. For example, Fedora 25 includes it in the subversion-tools
package. OpenCSW even includes it in the main subversion package.
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With