On 18.08.2015 08:34, corneil.duples...@gmail.com wrote: > I am in the process of developing a set of utilities for managing the > 'promotion' of code from trunk to specific tags etc. The project has been > doing tag based development for more than 10 years and is now moving from > CVS to SVN. > > I am using the JavaHL api from org.apache.subversion.javahl > From my experience as a user of Subversion in Eclipse and other tools I > come to expect support for performing multiple operations in a > 'transaction' which results in one new version with the relevant comments. > > I cannot figure out how to do this with the JavaHL api. > > As an example: > Give the following structure: > PROJECT1/trunk/sub-project1/files/test.txt > PROJECT1/trunk/sub-project1/files/test2.txt > PROJECT1/trunk/sub-project1/morefiles/test3.txt > > A promotion of sub-project1 to 'integration' would entail > copy from PROJECT1/trunk/sub-project1 to PROJECT1/tags/integration/sub- > project1 > This can be done on cmd line using svn copy > > > Assume someone then modifies test2.txt and test3/txt on trunk and committed > those changes. Our requirements are to make a backup of the target sub > project before applying the changes so that a 'demote' can be performed if > needed. > A new promotion should now entail: > create: > PROJECT1/tags/BACKUP_integration_20150812_180902_username/sub-project1/files > PROJECT1/tags/BACKUP_integration_20150812_180902_username/sub-project1/morefiles > move the files that are being modified: > PROJECT1/tags/integration/sub-project1/files/test2.txt to > PROJECT1/tags/BACKUP_integration_20150812_180902_username/sub-project1/files/test2.txt > PROJECT1/tags/integration/sub-project1/morefiles/test3.txt to > PROJECT1/tags/BACKUP_integration_20150812_180902_username/sub-project1/morefiles/test3.txt > copy the file that is not modified: > PROJECT1/tags/integration/sub-project1/files/test.txt to > PROJECT1/tags/BACKUP_integration_20150812_180902_username/sub-project1/files/test.txt > copy the modified files from trunk to tags/integration > PROJECT1/trunk/sub-project1/files/test2.txt to > PROJECT1/tags/integration/sub-project1/files/test2.txt > PROJECT1/trunk/sub-project1/morefiles/test3.txt to > PROJECT1/trunk/sub-project1/morefiles/test3.txt > > > To perform these operations involve multiple api calls and a new version > for each operation. > The api allows for multiple files are in the same source and target folder > in the case of copy and move operations. > > It would be some much cleaner with transactions resulting in one new > version so that it is easy to identify all the related operations. > > From an exploration of the C api it seems that transactions are supported. > I would like to know if I have missed something somewhere.
There is no public API equivalent for the functionality of the svnmucc tool. There's a *private* API for that in libsvn_client, but it's not exposed in JavaHL. In C, you can get equivalent functionality by using the libsvn_ra layer directly; most of that is available in JavaHL through the ISVNRemote interface in 1.9. See ISVNRemote.getCommitEditor() and ISVNEditor. -- Brane