Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java Wed Feb 25 08:15:39 2015 @@ -34,138 +34,138 @@ import org.apache.subversion.javahl.type public interface ISVNRepos { - /** - * interface to receive the messages - */ - public static interface MessageReceiver - { - /** - * receive one message line - * @param message one line of message - */ - public void receiveMessageLine(String message); - } - - /** - * release the native peer (should not depend on finalize) - */ - public abstract void dispose(); - - /** - * Filesystem in a Berkeley DB - */ - public static final String BDB = "bdb"; - /** - * Filesystem in the filesystem - */ - public static final String FSFS = "fsfs"; - - /** - * @return Version information about the underlying native libraries. - */ - public abstract Version getVersion(); - - /** - * create a subversion repository. - * @param path the path where the repository will been - * created. - * @param disableFsyncCommit disable to fsync at the commit (BDB). - * @param keepLog keep the log files (BDB). - * @param configPath optional path for user configuration files. - * @param fstype the type of the filesystem (BDB or FSFS) - * @throws ClientException throw in case of problem - */ - public abstract void create(File path, boolean disableFsyncCommit, - boolean keepLog, File configPath, String fstype) - throws ClientException; - - /** - * deltify the revisions in the repository - * @param path the path to the repository - * @param start start revision - * @param end end revision - * @throws ClientException throw in case of problem - */ - public abstract void deltify(File path, Revision start, Revision end) - throws ClientException; - - /** - * dump the data in a repository - * @param path the path to the repository - * @param dataOut the data will be outputed here - * @param start the first revision to be dumped - * @param end the last revision to be dumped - * @param incremental the dump will be incremantal - * @param useDeltas the dump will contain deltas between nodes + /** + * interface to receive the messages + */ + public static interface MessageReceiver + { + /** + * receive one message line + * @param message one line of message + */ + public void receiveMessageLine(String message); + } + + /** + * release the native peer (should not depend on finalize) + */ + public abstract void dispose(); + + /** + * Filesystem in a Berkeley DB + */ + public static final String BDB = "bdb"; + /** + * Filesystem in the filesystem + */ + public static final String FSFS = "fsfs"; + + /** + * @return Version information about the underlying native libraries. + */ + public abstract Version getVersion(); + + /** + * create a subversion repository. + * @param path the path where the repository will been + * created. + * @param disableFsyncCommit disable to fsync at the commit (BDB). + * @param keepLog keep the log files (BDB). + * @param configPath optional path for user configuration files. + * @param fstype the type of the filesystem (BDB or FSFS) + * @throws ClientException throw in case of problem + */ + public abstract void create(File path, boolean disableFsyncCommit, + boolean keepLog, File configPath, String fstype) + throws ClientException; + + /** + * deltify the revisions in the repository + * @param path the path to the repository + * @param start start revision + * @param end end revision + * @throws ClientException throw in case of problem + */ + public abstract void deltify(File path, Revision start, Revision end) + throws ClientException; + + /** + * dump the data in a repository + * @param path the path to the repository + * @param dataOut the data will be outputed here + * @param start the first revision to be dumped + * @param end the last revision to be dumped + * @param incremental the dump will be incremantal + * @param useDeltas the dump will contain deltas between nodes * @param callback the callback to receive notifications - * @throws ClientException throw in case of problem - */ - public abstract void dump(File path, OutputStream dataOut, + * @throws ClientException throw in case of problem + */ + public abstract void dump(File path, OutputStream dataOut, Revision start, Revision end, boolean incremental, boolean useDeltas, ReposNotifyCallback callback) - throws ClientException; + throws ClientException; - /** - * make a hot copy of the repository - * @param path the path to the source repository - * @param targetPath the path to the target repository - * @param cleanLogs clean the unused log files in the source - * repository + /** + * make a hot copy of the repository + * @param path the path to the source repository + * @param targetPath the path to the target repository + * @param cleanLogs clean the unused log files in the source + * repository * @param callback the callback to receive notifications - * @throws ClientException throw in case of problem + * @throws ClientException throw in case of problem * @since 1.9 - */ - public abstract void hotcopy(File path, File targetPath, + */ + public abstract void hotcopy(File path, File targetPath, boolean cleanLogs, boolean incremental, ReposNotifyCallback callback) throws ClientException; - public abstract void hotcopy(File path, File targetPath, - boolean cleanLogs, boolean incremental) + public abstract void hotcopy(File path, File targetPath, + boolean cleanLogs, boolean incremental) throws ClientException; - public abstract void hotcopy(File path, File targetPath, - boolean cleanLogs) throws ClientException; + public abstract void hotcopy(File path, File targetPath, + boolean cleanLogs) throws ClientException; - /** - * list all logfiles (BDB) in use or not) - * @param path the path to the repository - * @param receiver interface to receive the logfile names - * @throws ClientException throw in case of problem - */ - public abstract void listDBLogs(File path, MessageReceiver receiver) - throws ClientException; - - /** - * list unused logfiles - * @param path the path to the repository - * @param receiver interface to receive the logfile names - * @throws ClientException throw in case of problem - */ - public abstract void listUnusedDBLogs(File path, MessageReceiver receiver) - throws ClientException; - - - /** - * load the data of a dump into a repository - * @param path the path to the repository - * @param dataInput the data input source + /** + * list all logfiles (BDB) in use or not) + * @param path the path to the repository + * @param receiver interface to receive the logfile names + * @throws ClientException throw in case of problem + */ + public abstract void listDBLogs(File path, MessageReceiver receiver) + throws ClientException; + + /** + * list unused logfiles + * @param path the path to the repository + * @param receiver interface to receive the logfile names + * @throws ClientException throw in case of problem + */ + public abstract void listUnusedDBLogs(File path, MessageReceiver receiver) + throws ClientException; + + + /** + * load the data of a dump into a repository + * @param path the path to the repository + * @param dataInput the data input source * @param start the first revision to load * @param end the last revision to load - * @param ignoreUUID ignore any UUID found in the input stream - * @param forceUUID set the repository UUID to any found in the - * stream - * @param usePreCommitHook use the pre-commit hook when processing commits - * @param usePostCommitHook use the post-commit hook when processing commits + * @param ignoreUUID ignore any UUID found in the input stream + * @param forceUUID set the repository UUID to any found in the + * stream + * @param usePreCommitHook use the pre-commit hook when processing commits + * @param usePostCommitHook use the post-commit hook when processing commits * @param validateProps validate "svn:" revision and node properties * @param ignoreDates ignore revision datestamps in the dump stream - * @param relativePath the directory in the repository, where the data - * in put optional. - * @param callback the target for processing messages - * @throws ClientException throw in case of problem + * @param relativePath the directory in the repository, where the data + * in put optional. + * @param callback the target for processing messages + * @throws ClientException throw in case of problem * @since 1.9 - */ - public abstract void load(File path, InputStream dataInput, + */ + public abstract void load(File path, InputStream dataInput, Revision start, Revision end, boolean ignoreUUID, boolean forceUUID, boolean usePreCommitHook, @@ -176,27 +176,27 @@ public interface ISVNRepos { ReposNotifyCallback callback) throws ClientException; - /** - * Load the data of a dump into a repository. Sets + /** + * Load the data of a dump into a repository. Sets * <code>validateProps</code> and <code>ignoreDates</code> to * <code>false</code>. * - * @param path the path to the repository - * @param dataInput the data input source + * @param path the path to the repository + * @param dataInput the data input source * @param start the first revision to load * @param end the last revision to load - * @param ignoreUUID ignore any UUID found in the input stream - * @param forceUUID set the repository UUID to any found in the - * stream - * @param usePreCommitHook use the pre-commit hook when processing commits - * @param usePostCommitHook use the post-commit hook when processing commits - * @param relativePath the directory in the repository, where the data - * in put optional. - * @param callback the target for processing messages - * @throws ClientException throw in case of problem + * @param ignoreUUID ignore any UUID found in the input stream + * @param forceUUID set the repository UUID to any found in the + * stream + * @param usePreCommitHook use the pre-commit hook when processing commits + * @param usePostCommitHook use the post-commit hook when processing commits + * @param relativePath the directory in the repository, where the data + * in put optional. + * @param callback the target for processing messages + * @throws ClientException throw in case of problem * @since 1.8 - */ - public abstract void load(File path, InputStream dataInput, + */ + public abstract void load(File path, InputStream dataInput, Revision start, Revision end, boolean ignoreUUID, boolean forceUUID, boolean usePreCommitHook, @@ -205,163 +205,163 @@ public interface ISVNRepos { ReposNotifyCallback callback) throws ClientException; - /** - * load the data of a dump into a repository - * @param path the path to the repository - * @param dataInput the data input source - * @param ignoreUUID ignore any UUID found in the input stream - * @param forceUUID set the repository UUID to any found in the - * stream - * @param usePreCommitHook use the pre-commit hook when processing commits - * @param usePostCommitHook use the post-commit hook when processing commits - * @param relativePath the directory in the repository, where the data - * in put optional. - * @param callback the target for processing messages - * @throws ClientException throw in case of problem + /** + * load the data of a dump into a repository + * @param path the path to the repository + * @param dataInput the data input source + * @param ignoreUUID ignore any UUID found in the input stream + * @param forceUUID set the repository UUID to any found in the + * stream + * @param usePreCommitHook use the pre-commit hook when processing commits + * @param usePostCommitHook use the post-commit hook when processing commits + * @param relativePath the directory in the repository, where the data + * in put optional. + * @param callback the target for processing messages + * @throws ClientException throw in case of problem * @note behaves like the 1.8 vesion with the revision * parameters set to Revision.START and Revision.HEAD. - */ - public abstract void load(File path, InputStream dataInput, - boolean ignoreUUID, boolean forceUUID, boolean usePreCommitHook, + */ + public abstract void load(File path, InputStream dataInput, + boolean ignoreUUID, boolean forceUUID, boolean usePreCommitHook, boolean usePostCommitHook, String relativePath, ReposNotifyCallback callback) throws ClientException; - /** - * list all open transactions in a repository - * @param path the path to the repository - * @param receiver receives one transaction name per call - * @throws ClientException throw in case of problem - */ - public abstract void lstxns(File path, MessageReceiver receiver) - throws ClientException; - - /** - * recover the filesystem backend of a repository - * @param path the path to the repository + /** + * list all open transactions in a repository + * @param path the path to the repository + * @param receiver receives one transaction name per call + * @throws ClientException throw in case of problem + */ + public abstract void lstxns(File path, MessageReceiver receiver) + throws ClientException; + + /** + * recover the filesystem backend of a repository + * @param path the path to the repository * @return youngest revision - * @throws ClientException throw in case of problem - */ - public abstract long recover(File path, ReposNotifyCallback callback) - throws ClientException; - - /** - * Take an exclusive lock on each of the listed repositories - * to prevent commits; then, while holding all the locks, call - * the action.invoke(). - * - * The repositories may or may not be readable by Subversion - * while frozen, depending on implementation details of the - * repository's filesystem backend. - * - * Repositories are locked in the listed order. - * @param action describes the action to perform - * @param paths the set of repository paths - * @throws ClientException + * @throws ClientException throw in case of problem + */ + public abstract long recover(File path, ReposNotifyCallback callback) + throws ClientException; + + /** + * Take an exclusive lock on each of the listed repositories + * to prevent commits; then, while holding all the locks, call + * the action.invoke(). + * + * The repositories may or may not be readable by Subversion + * while frozen, depending on implementation details of the + * repository's filesystem backend. + * + * Repositories are locked in the listed order. + * @param action describes the action to perform + * @param paths the set of repository paths + * @throws ClientException * @since 1.8 - */ - public abstract void freeze(ReposFreezeAction action, - File... paths) - throws ClientException; - - /** - * remove open transaction in a repository - * @param path the path to the repository - * @param transactions the transactions to be removed - * @throws ClientException throw in case of problem - */ - public abstract void rmtxns(File path, String[] transactions) - throws ClientException; - - /** - * Change the value of the revision property <code>propName</code> - * to <code>propValue</code>. By default, does not run - * pre-/post-revprop-change hook scripts. - * - * @param path The path to the repository. - * @param rev The revision for which to change a property value. - * @param propName The name of the property to change. - * @param propValue The new value to set for the property. - * @param usePreRevPropChangeHook Whether to run the - * <i>pre-revprop-change</i> hook script. - * @param usePostRevPropChangeHook Whether to run the - * <i>post-revprop-change</i> hook script. - * @throws SubversionException If a problem occurs. - */ - public abstract void setRevProp(File path, Revision rev, String propName, - String propValue, boolean usePreRevPropChangeHook, - boolean usePostRevPropChangeHook) throws SubversionException; - - /** - * Verify the repository at <code>path</code> between revisions - * <code>start</code> and <code>end</code>. - * - * @param path the path to the repository - * @param start the first revision - * @param end the last revision + */ + public abstract void freeze(ReposFreezeAction action, + File... paths) + throws ClientException; + + /** + * remove open transaction in a repository + * @param path the path to the repository + * @param transactions the transactions to be removed + * @throws ClientException throw in case of problem + */ + public abstract void rmtxns(File path, String[] transactions) + throws ClientException; + + /** + * Change the value of the revision property <code>propName</code> + * to <code>propValue</code>. By default, does not run + * pre-/post-revprop-change hook scripts. + * + * @param path The path to the repository. + * @param rev The revision for which to change a property value. + * @param propName The name of the property to change. + * @param propValue The new value to set for the property. + * @param usePreRevPropChangeHook Whether to run the + * <i>pre-revprop-change</i> hook script. + * @param usePostRevPropChangeHook Whether to run the + * <i>post-revprop-change</i> hook script. + * @throws SubversionException If a problem occurs. + */ + public abstract void setRevProp(File path, Revision rev, String propName, + String propValue, boolean usePreRevPropChangeHook, + boolean usePostRevPropChangeHook) throws SubversionException; + + /** + * Verify the repository at <code>path</code> between revisions + * <code>start</code> and <code>end</code>. + * + * @param path the path to the repository + * @param start the first revision + * @param end the last revision * @param keepGoing continue verification even if a revision is bad * @param checkNormalization report directory entry and mergeinfo name collisions * caused by denormalized Unicode representations * @param metadataOnly check only metadata, not file contents * @param callback the callback to receive notifications - * @throws ClientException If an error occurred. + * @throws ClientException If an error occurred. * @since 1.9 - */ - public abstract void verify(File path, Revision start, Revision end, + */ + public abstract void verify(File path, Revision start, Revision end, boolean keepGoing, boolean checkNormalization, boolean metadataOnly, ReposNotifyCallback callback) throws ClientException; - /** - * Verify the repository at <code>path</code> between revisions - * <code>start</code> and <code>end</code>. - * - * @param path the path to the repository - * @param start the first revision - * @param end the last revision + /** + * Verify the repository at <code>path</code> between revisions + * <code>start</code> and <code>end</code>. + * + * @param path the path to the repository + * @param start the first revision + * @param end the last revision * @param callback the callback to receive notifications - * @throws ClientException If an error occurred. - */ - public abstract void verify(File path, Revision start, Revision end, + * @throws ClientException If an error occurred. + */ + public abstract void verify(File path, Revision start, Revision end, ReposNotifyCallback callback) throws ClientException; - /** - * list all locks in the repository - * @param path the path to the repository + /** + * list all locks in the repository + * @param path the path to the repository * @param depth the depth to recurse - * @throws ClientException throw in case of problem - */ - public abstract Set<Lock> lslocks(File path, Depth depth) + * @throws ClientException throw in case of problem + */ + public abstract Set<Lock> lslocks(File path, Depth depth) throws ClientException; - /** - * remove multiple locks from the repository - * @param path the path to the repository - * @param locks the name of the locked items - * @throws ClientException throw in case of problem - */ - public abstract void rmlocks(File path, String[] locks) - throws ClientException; + /** + * remove multiple locks from the repository + * @param path the path to the repository + * @param locks the name of the locked items + * @throws ClientException throw in case of problem + */ + public abstract void rmlocks(File path, String[] locks) + throws ClientException; /** * upgrade the repository format * @param path the path to the repository * @param callback for notification - * @throws ClientException throw in case of problem + * @throws ClientException throw in case of problem */ public abstract void upgrade(File path, ReposNotifyCallback callback) - throws ClientException; + throws ClientException; /** * pack the repository * @param path the path to the repository * @param callback for notification - * @throws ClientException throw in case of problem + * @throws ClientException throw in case of problem */ public abstract void pack(File path, ReposNotifyCallback callback) - throws ClientException; + throws ClientException; /** * cancel the active operation
Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java Wed Feb 25 08:15:39 2015 @@ -142,10 +142,10 @@ public class NativeResources private static final void init() { version = new Version(); - if (!version.isAtLeast(1, 9, 0)) + if (!version.isAtLeast(1, 10, 0)) { throw new LinkageError("Native library version must be at least " + - "1.9.0, but is only " + version); + "1.10.0, but is only " + version); } runtimeVersion = new RuntimeVersion(); Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Wed Feb 25 08:15:39 2015 @@ -240,11 +240,24 @@ public class SVNClient implements ISVNCl public native void copy(List<CopySource> sources, String destPath, boolean copyAsChild, boolean makeParents, - boolean ignoreExternals, + boolean ignoreExternals, boolean metadataOnly, + boolean pinExternals, + Map<String, List<ExternalItem>> externalsToPin, Map<String, String> revpropTable, CommitMessageCallback handler, CommitCallback callback) throws ClientException; + public void copy(List<CopySource> sources, String destPath, + boolean copyAsChild, boolean makeParents, + boolean ignoreExternals, + Map<String, String> revpropTable, + CommitMessageCallback handler, CommitCallback callback) + throws ClientException + { + copy(sources, destPath, copyAsChild, makeParents, ignoreExternals, + false, false, null, revpropTable, handler, callback); + } + public native void move(Set<String> srcPaths, String destPath, boolean force, boolean moveAsChild, boolean makeParents, boolean metadataOnly, Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Wed Feb 25 08:15:39 2015 @@ -2418,18 +2418,18 @@ public class SVNClient implements SVNCli { try { - final List<org.apache.subversion.javahl.types.Info> infos = - new ArrayList<org.apache.subversion.javahl.types.Info>(); - aSVNClient.info2(path, - org.apache.subversion.javahl.types.Revision.HEAD, - org.apache.subversion.javahl.types.Revision.HEAD, - org.apache.subversion.javahl.types.Depth.empty, - null, new org.apache.subversion.javahl.callback.InfoCallback() - { - public void singleInfo(org.apache.subversion.javahl.types.Info info) { - infos.add(info); - } - }); + final List<org.apache.subversion.javahl.types.Info> infos = + new ArrayList<org.apache.subversion.javahl.types.Info>(); + aSVNClient.info2(path, + org.apache.subversion.javahl.types.Revision.HEAD, + org.apache.subversion.javahl.types.Revision.HEAD, + org.apache.subversion.javahl.types.Depth.empty, + null, new org.apache.subversion.javahl.callback.InfoCallback() + { + public void singleInfo(org.apache.subversion.javahl.types.Info info) { + infos.add(info); + } + }); return new Info(infos.get(0)); } catch (org.apache.subversion.javahl.ClientException ex) Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Wed Feb 25 08:15:39 2015 @@ -269,7 +269,7 @@ public class BasicTests extends SVNTests } catch(JNIError e) { - return; // Test passes! + return; // Test passes! } fail("A JNIError should have been thrown here."); } @@ -1060,7 +1060,7 @@ public class BasicTests extends SVNTests } client.copy(sources, new File(thisTest.getWorkingCopy(), "A/B/F").getPath(), - true, false, false, null, null, null); + true, false, false, false, false, null, null, null, null); // Commit the changes, and check the state of the WC. checkCommitRevision(thisTest, @@ -1077,7 +1077,7 @@ public class BasicTests extends SVNTests "A/B").getPath(), Revision.WORKING, Revision.WORKING)); client.copy(wcSource, thisTest.getUrl() + "/parent/A/B", - true, true, false, null, + true, true, false, false, false, null, null, new ConstMsg("Copy WC to URL"), null); // update the WC to get new folder and confirm the copy @@ -1085,6 +1085,178 @@ public class BasicTests extends SVNTests update(thisTest), 3); } + + // Set up externals references in the working copy for the + // pin-externals tests. + private void setupPinExternalsTest(OneTest thisTest) throws Throwable + { + byte[] extref = ("^/A/D/H ADHext\n" + + "^/A/D/H@1 peggedADHext\n" + + "-r1 ^/A/D/H revvedADHext\n").getBytes(); + Set<String> paths = new HashSet<String>(); + paths.add(thisTest.getWCPath() + "/A/B"); + + // Add an externals reference to the working copy. + client.propertySetLocal(paths, "svn:externals", extref, + Depth.empty, null, false); + + // Commit the externals definition + client.commit(thisTest.getWCPathSet(), Depth.infinity, + false, false, null, null, + new ConstMsg("Set svn:externals"), null); + + // Update the working copy to bring in the external subtree. + client.update(thisTest.getWCPathSet(), Revision.HEAD, + Depth.unknown, false, false, false, false); + } + + /** + * Test WC-to-WC copy with implicit pinned externals + * @throws Throwable + */ + public void testCopyPinExternals_wc2wc() throws Throwable + { + // build the test setup + OneTest thisTest = new OneTest(); + setupPinExternalsTest(thisTest); + + List<CopySource> sources = new ArrayList<CopySource>(1); + sources.add(new CopySource(thisTest.getWCPath() + "/A/B", null, null)); + String target = thisTest.getWCPath() + "/A/Bcopy"; + client.copy(sources, target, true, false, false, false, + true, // pinExternals + null, // externalsToPin + null, null, null); + + // Verification + String expected = ("^/A/D/H@2 ADHext\n" + + "^/A/D/H@1 peggedADHext\n" + + "-r1 ^/A/D/H@2 revvedADHext\n"); + String actual = + new String(client.propertyGet(target, "svn:externals", null, null)); + + assertEquals(expected, actual); + } + + /** + * Test WC-to-REPO copy with implicit pinned externals + * @throws Throwable + */ + public void testCopyPinExternals_wc2repo() throws Throwable + { + // build the test setup + OneTest thisTest = new OneTest(); + setupPinExternalsTest(thisTest); + + List<CopySource> sources = new ArrayList<CopySource>(1); + sources.add(new CopySource(thisTest.getWCPath() + "/A/B", null, null)); + String target = thisTest.getUrl() + "/A/Bcopy"; + client.copy(sources, target, true, false, false, false, + true, // pinExternals + null, // externalsToPin + null, new ConstMsg("Copy WC to REPO"), null); + + // Verification + String expected = ("^/A/D/H@2 ADHext\n" + + "^/A/D/H@1 peggedADHext\n" + + "-r1 ^/A/D/H@2 revvedADHext\n"); + String actual = + new String(client.propertyGet(target, "svn:externals", null, null)); + + assertEquals(expected, actual); + } + + /** + * Test REPO-to-WC copy with implicit pinned externals + * @throws Throwable + */ + public void testCopyPinExternals_repo2wc() throws Throwable + { + // build the test setup + OneTest thisTest = new OneTest(); + setupPinExternalsTest(thisTest); + + List<CopySource> sources = new ArrayList<CopySource>(1); + sources.add(new CopySource(thisTest.getUrl() + "/A/B", null, null)); + String target = thisTest.getWCPath() + "/A/Bcopy"; + client.copy(sources, target, true, false, false, false, + true, // pinExternals + null, // externalsToPin + null, null, null); + + // Verification + String expected = ("^/A/D/H@2 ADHext\n" + + "^/A/D/H@1 peggedADHext\n" + + "-r1 ^/A/D/H@2 revvedADHext\n"); + String actual = + new String(client.propertyGet(target, "svn:externals", null, null)); + + assertEquals(expected, actual); + } + + /** + * Test REPO-to-REPO copy with implicit pinned externals + * @throws Throwable + */ + public void testCopyPinExternals_repo2repo() throws Throwable + { + // build the test setup + OneTest thisTest = new OneTest(); + setupPinExternalsTest(thisTest); + + List<CopySource> sources = new ArrayList<CopySource>(1); + sources.add(new CopySource(thisTest.getUrl() + "/A/B", null, null)); + String target = thisTest.getUrl() + "/A/Bcopy"; + client.copy(sources, target, true, false, false, false, + true, // pinExternals + null, // externalsToPin + null, new ConstMsg("Copy WC to REPO"), null); + + // Verification + String expected = ("^/A/D/H@2 ADHext\n" + + "^/A/D/H@1 peggedADHext\n" + + "-r1 ^/A/D/H@2 revvedADHext\n"); + String actual = + new String(client.propertyGet(target, "svn:externals", null, null)); + + assertEquals(expected, actual); + } + + /** + * Test REPO-to-REPO copy with eplicit pinned externals + * @throws Throwable + */ + public void testCopyPinExternals_repo2repo_explicit() throws Throwable + { + // build the test setup + OneTest thisTest = new OneTest(); + setupPinExternalsTest(thisTest); + + String sourceUrl = thisTest.getUrl() + "/A/B"; + Map<String, List<ExternalItem>> externalsToPin = + new HashMap<String, List<ExternalItem>>(); + List<ExternalItem> items = new ArrayList<ExternalItem>(1); + items.add(new ExternalItem("ADHext", "^/A/D/H", null, null)); + externalsToPin.put(sourceUrl, items); + + List<CopySource> sources = new ArrayList<CopySource>(1); + sources.add(new CopySource(sourceUrl, null, null)); + String target = thisTest.getUrl() + "/A/Bcopy"; + client.copy(sources, target, true, false, false, false, + true, // pinExternals + externalsToPin, + null, new ConstMsg("Copy WC to REPO"), null); + + // Verification + String expected = ("^/A/D/H@2 ADHext\n" + + "^/A/D/H@1 peggedADHext\n" + + "-r1 ^/A/D/H revvedADHext\n"); + String actual = + new String(client.propertyGet(target, "svn:externals", null, null)); + + assertEquals(expected, actual); + } + /** * Test the {@link SVNClientInterface.move()} API. * @since 1.5 @@ -3003,7 +3175,7 @@ public class BasicTests extends SVNTests srcs.add(new CopySource(thisTest.getUrl() + "/A", Revision.HEAD, Revision.HEAD)); client.copy(srcs, thisTest.getUrl() + "/branches/A", - true, false, false, null, + true, false, false, false, false, null, null, new ConstMsg("create A branch"), null); // update the WC (to r3) so that it has the branches folder @@ -3046,7 +3218,7 @@ public class BasicTests extends SVNTests // Do nothing, right now. return false; } - }); + }); } /** Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Wed Feb 25 08:15:39 2015 @@ -130,11 +130,11 @@ static void *convert_pl_revision_range(S /* this will assign to range */ SWIG_ConvertPtr(value, (void **)&range, _SWIG_TYPE("svn_opt_revision_range_t *"), 0); return range; - } + } - if (SvROK(value) + if (SvROK(value) && SvTYPE(SvRV(value)) == SVt_PVAV - && av_len((AV *)SvRV(value)) == 1) { + && av_len((AV *)SvRV(value)) == 1) { /* value is a two-element ARRAY */ AV* array = (AV *)SvRV(value); svn_opt_revision_t temp_start, temp_end; @@ -143,17 +143,17 @@ static void *convert_pl_revision_range(S /* Note: Due to how svn_swig_pl_set_revision works, * either the passed in svn_opt_revision_t is modified - * (and the original pointer returned) or a different pointer + * (and the original pointer returned) or a different pointer * is returned. svn_swig_pl_set_revision may return NULL * only if croak_on_error is FALSE. */ - start = svn_swig_pl_set_revision(&temp_start, - *av_fetch(array, 0, 0), + start = svn_swig_pl_set_revision(&temp_start, + *av_fetch(array, 0, 0), croak_on_error, pool); if (start == NULL) return NULL; - end = svn_swig_pl_set_revision(&temp_end, - *av_fetch(array, 1, 0), + end = svn_swig_pl_set_revision(&temp_end, + *av_fetch(array, 1, 0), croak_on_error, pool); if (end == NULL) return NULL; @@ -163,7 +163,7 @@ static void *convert_pl_revision_range(S range->start = *start; range->end = *end; return range; - } + } if (croak_on_error) croak("unknown revision range: " @@ -283,7 +283,7 @@ apr_array_header_t *svn_swig_pl_objs_to_ } /* Convert a single revision range or an array of revisions ranges - * Note: We can't simply use svn_swig_pl_to_array() as is, since + * Note: We can't simply use svn_swig_pl_to_array() as is, since * it immediatley checks whether source is an array reference and then * proceeds to treat this as the "array of ..." case. But a revision range * may be specified as a (two-element) array. Hence we first try to @@ -297,7 +297,7 @@ apr_array_header_t *svn_swig_pl_array_to svn_opt_revision_range_t *range; if ((range = convert_pl_revision_range(source, &croak_on_error, pool))) { - apr_array_header_t *temp = apr_array_make(pool, 1, + apr_array_header_t *temp = apr_array_make(pool, 1, sizeof(svn_opt_revision_range_t *)); temp->nelts = 1; APR_ARRAY_IDX(temp, 0, svn_opt_revision_range_t *) = range; @@ -306,7 +306,7 @@ apr_array_header_t *svn_swig_pl_array_to if (SvROK(source) && SvTYPE(SvRV(source)) == SVt_PVAV) { croak_on_error = TRUE; - return svn_swig_pl_to_array(source, convert_pl_revision_range, + return svn_swig_pl_to_array(source, convert_pl_revision_range, &croak_on_error, pool); } @@ -314,7 +314,7 @@ apr_array_header_t *svn_swig_pl_array_to /* This return is actually unreachable because of the croak above, * however, Visual Studio's compiler doesn't like if all paths don't have - * a return and errors out otherwise. */ + * a return and errors out otherwise. */ return NULL; } @@ -430,8 +430,8 @@ SV *svn_swig_pl_revnums_to_list(const ap } /* perl -> c svn_opt_revision_t conversion */ -svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, - SV *source, +svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, + SV *source, svn_boolean_t croak_on_error, apr_pool_t *pool) { @@ -471,7 +471,7 @@ svn_opt_revision_t *svn_swig_pl_set_revi maybe_croak(("unknown opt_revision_t string \"%s\": " "missing closing brace for \"{DATE}\"", input)); *end = '\0'; - err = svn_parse_date (&matched, &tm, + err = svn_parse_date (&matched, &tm, input + 1, apr_time_now(), pool); if (err) { svn_error_clear (err); @@ -1043,7 +1043,7 @@ svn_error_t *svn_swig_pl_thunk_log_entry svn_swig_pl_callback_thunk(CALL_SV, receiver, NULL, - "SS", + "SS", log_entry, _SWIG_TYPE("svn_log_entry_t *"), pool, POOLINFO); Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Wed Feb 25 08:15:39 2015 @@ -108,7 +108,7 @@ SV *svn_swig_pl_convert_array(const apr_ SV *svn_swig_pl_revnums_to_list(const apr_array_header_t *array); -svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, +svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source, svn_boolean_t croak_on_error, apr_pool_t *pool); @@ -135,9 +135,9 @@ svn_error_t * svn_swig_pl_thunk_client_d /* thunked commit editor callback. */ svn_error_t *svn_swig_pl_thunk_commit_callback(svn_revnum_t new_revision, - const char *date, - const char *author, - void *baton); + const char *date, + const char *author, + void *baton); /* thunked commit editor callback2. */ svn_error_t *svn_swig_pl_thunk_commit_callback2(const svn_commit_info_t *commit_info, @@ -219,12 +219,12 @@ svn_error_t *thunk_get_wc_prop(void *bat /* Thunked version of svn_wc_notify_func_t callback type */ void svn_swig_pl_notify_func(void * baton, const char *path, - svn_wc_notify_action_t action, - svn_node_kind_t kind, - const char *mime_type, - svn_wc_notify_state_t content_state, - svn_wc_notify_state_t prop_state, - svn_revnum_t revision); + svn_wc_notify_action_t action, + svn_node_kind_t kind, + const char *mime_type, + svn_wc_notify_state_t content_state, + svn_wc_notify_state_t prop_state, + svn_revnum_t revision); /* Thunked version of svn_client_get_commit_log3_t callback type. */ Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Wed Feb 25 08:15:39 2015 @@ -1417,62 +1417,62 @@ commit_item_array_to_list(const apr_arra } - + /*** Errors ***/ /* Convert a given SubversionException to an svn_error_t. On failure returns NULL and sets a Python exception. */ static svn_error_t *exception_to_error(PyObject * exc) { - const char *message, *file = NULL; - apr_status_t apr_err; - long line = 0; - PyObject *apr_err_ob = NULL, *child_ob = NULL, *message_ob = NULL; - PyObject *file_ob = NULL, *line_ob = NULL; + const char *message, *file = NULL; + apr_status_t apr_err; + long line = 0; + PyObject *apr_err_ob = NULL, *child_ob = NULL, *message_ob = NULL; + PyObject *file_ob = NULL, *line_ob = NULL; svn_error_t *rv = NULL, *child = NULL; - if ((apr_err_ob = PyObject_GetAttrString(exc, "apr_err")) == NULL) - goto finished; - apr_err = (apr_status_t) PyInt_AsLong(apr_err_ob); - if (PyErr_Occurred()) goto finished; - - if ((message_ob = PyObject_GetAttrString(exc, "message")) == NULL) - goto finished; - message = PyString_AsString(message_ob); - if (PyErr_Occurred()) goto finished; - - if ((file_ob = PyObject_GetAttrString(exc, "file")) == NULL) - goto finished; - if (file_ob != Py_None) - file = PyString_AsString(file_ob); - if (PyErr_Occurred()) goto finished; - - if ((line_ob = PyObject_GetAttrString(exc, "line")) == NULL) - goto finished; - if (line_ob != Py_None) - line = PyInt_AsLong(line_ob); - if (PyErr_Occurred()) goto finished; - - if ((child_ob = PyObject_GetAttrString(exc, "child")) == NULL) - goto finished; - /* We could check if the child is a Subversion exception too, - but let's just apply duck typing. */ - if (child_ob != Py_None) - child = exception_to_error(child_ob); - if (PyErr_Occurred()) goto finished; - - rv = svn_error_create(apr_err, child, message); - /* Somewhat hacky, but we need to preserve original file/line info. */ - rv->file = file ? apr_pstrdup(rv->pool, file) : NULL; - rv->line = line; + if ((apr_err_ob = PyObject_GetAttrString(exc, "apr_err")) == NULL) + goto finished; + apr_err = (apr_status_t) PyInt_AsLong(apr_err_ob); + if (PyErr_Occurred()) goto finished; + + if ((message_ob = PyObject_GetAttrString(exc, "message")) == NULL) + goto finished; + message = PyString_AsString(message_ob); + if (PyErr_Occurred()) goto finished; + + if ((file_ob = PyObject_GetAttrString(exc, "file")) == NULL) + goto finished; + if (file_ob != Py_None) + file = PyString_AsString(file_ob); + if (PyErr_Occurred()) goto finished; + + if ((line_ob = PyObject_GetAttrString(exc, "line")) == NULL) + goto finished; + if (line_ob != Py_None) + line = PyInt_AsLong(line_ob); + if (PyErr_Occurred()) goto finished; + + if ((child_ob = PyObject_GetAttrString(exc, "child")) == NULL) + goto finished; + /* We could check if the child is a Subversion exception too, + but let's just apply duck typing. */ + if (child_ob != Py_None) + child = exception_to_error(child_ob); + if (PyErr_Occurred()) goto finished; + + rv = svn_error_create(apr_err, child, message); + /* Somewhat hacky, but we need to preserve original file/line info. */ + rv->file = file ? apr_pstrdup(rv->pool, file) : NULL; + rv->line = line; finished: - Py_XDECREF(child_ob); - Py_XDECREF(line_ob); - Py_XDECREF(file_ob); - Py_XDECREF(message_ob); - Py_XDECREF(apr_err_ob); - return rv; + Py_XDECREF(child_ob); + Py_XDECREF(line_ob); + Py_XDECREF(file_ob); + Py_XDECREF(message_ob); + Py_XDECREF(apr_err_ob); + return rv; } /* If the currently set Python exception is a valid SubversionException, @@ -2376,7 +2376,7 @@ static svn_error_t *parse_fn3_close_revi } -static const svn_repos_parse_fns3_t thunk_parse_fns3_vtable = +static const svn_repos_parse_fns3_t thunk_parse_fns3_vtable = { parse_fn3_magic_header_record, parse_fn3_uuid_record, @@ -3761,7 +3761,7 @@ ra_callbacks_open_tmp_file(apr_file_t ** *fp = svn_swig_py_make_file(result, pool); if (*fp == NULL) { - err = callback_exception_error(); + err = callback_exception_error(); } } @@ -3811,7 +3811,7 @@ ra_callbacks_get_wc_prop(void *baton, Py_ssize_t len; if (PyString_AsStringAndSize(result, &buf, &len) == -1) { - err = callback_exception_error(); + err = callback_exception_error(); } else { @@ -4053,7 +4053,7 @@ ra_callbacks_get_client_string(void *bat { if ((*name = PyString_AsString(result)) == NULL) { - err = callback_exception_error(); + err = callback_exception_error(); } } Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c Wed Feb 25 08:15:39 2015 @@ -481,9 +481,9 @@ static void check_apr_status(apr_status_t status, VALUE exception_class, const char *format) { if (status != APR_SUCCESS) { - char buffer[1024]; - apr_strerror(status, buffer, sizeof(buffer) - 1); - rb_raise(exception_class, format, buffer); + char buffer[1024]; + apr_strerror(status, buffer, sizeof(buffer) - 1); + rb_raise(exception_class, format, buffer); } } @@ -526,8 +526,8 @@ svn_swig_rb_destroyer_destroy(VALUE self objects[0] = target; if (find_swig_type_object(1, objects) && DATA_PTR(target)) { - svn_swig_rb_destroy_internal_pool(target); - DATA_PTR(target) = NULL; + svn_swig_rb_destroy_internal_pool(target); + DATA_PTR(target) = NULL; } return Qnil; @@ -545,9 +545,9 @@ svn_swig_rb_initialize(void) } check_apr_status(apr_allocator_create(&swig_rb_allocator), - rb_eLoadError, "failed to create allocator: %s"); + rb_eLoadError, "failed to create allocator: %s"); apr_allocator_max_free_set(swig_rb_allocator, - SVN_ALLOCATOR_RECOMMENDED_MAX_FREE); + SVN_ALLOCATOR_RECOMMENDED_MAX_FREE); swig_rb_pool = svn_pool_create_ex(NULL, swig_rb_allocator); apr_pool_tag(swig_rb_pool, "svn-ruby-pool"); @@ -556,8 +556,8 @@ svn_swig_rb_initialize(void) apr_thread_mutex_t *mutex; check_apr_status(apr_thread_mutex_create(&mutex, APR_THREAD_MUTEX_DEFAULT, - swig_rb_pool), - rb_eLoadError, "failed to create allocator: %s"); + swig_rb_pool), + rb_eLoadError, "failed to create allocator: %s"); apr_allocator_mutex_set(swig_rb_allocator, mutex); } #endif @@ -590,7 +590,7 @@ svn_swig_rb_initialize(void) mSvnDestroyer = rb_define_module_under(rb_svn(), "Destroyer"); rb_define_module_function(mSvnDestroyer, "destroy", - svn_swig_rb_destroyer_destroy, 1); + svn_swig_rb_destroyer_destroy, 1); } apr_pool_t * @@ -743,7 +743,7 @@ static svn_boolean_t rb_set_pool_if_swig_type_object(VALUE target, VALUE pool) { VALUE targets[1]; - + targets[0] = target; if (!NIL_P(find_swig_type_object(1, targets))) { @@ -869,7 +869,7 @@ svn_swig_rb_raise_svn_repos_already_clos VALUE svn_swig_rb_svn_error_new(VALUE code, VALUE message, VALUE file, VALUE line, - VALUE child) + VALUE child) { return rb_funcall(rb_svn_error_svn_error(), id_new_corresponding_error, Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/test_fs.rb URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/test_fs.rb?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/test_fs.rb (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/test_fs.rb Wed Feb 25 08:15:39 2015 @@ -110,7 +110,7 @@ class SvnFsTest < Test::Unit::TestCase FileUtils.mkdir_p(fs_path) make_context(log) do |ctx| - # ### Verify Svn::Error::RaLocalReposOpenFailed in chain + # ### Verify Svn::Error::RaLocalReposOpenFailed in chain assert_raises(Svn::Error::RaCannotCreateSession) do ctx.log_message(path, rev) end Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/util.rb URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/util.rb?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/util.rb (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/util.rb Wed Feb 25 08:15:39 2015 @@ -1,4 +1,4 @@ -# ==================================================================== +# ==================================================================== # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -91,7 +91,7 @@ module SvnTestUtil @need_svnserve = need_svnserve setup_default_variables setup_tmp - setup_tmp(@import_path) + setup_tmp(@import_path) setup_repository add_hooks setup_svnserve if @need_svnserve Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/windows_util.rb URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/windows_util.rb?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/windows_util.rb (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/ruby/test/windows_util.rb Wed Feb 25 08:15:39 2015 @@ -51,7 +51,7 @@ module SvnTestUtil IO.popen("#{svnserve_path} -d -r #{Svnserve.escape_value(root)} --listen-host #{@svnserve_host} --listen-port #{@svnserve_port} --pid-file #{@svnserve_pid_file}") user = ENV["USERNAME"] || Etc.getlogin - + # Give svnserve a bit of time to start sleep 1 end Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_wc.i URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_wc.i?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_wc.i (original) +++ subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_wc.i Wed Feb 25 08:15:39 2015 @@ -43,6 +43,7 @@ /* ### ignore these structures because the accessors will need a pool */ %ignore svn_wc_keywords_t; %ignore svn_wc_conflict_description2_t; +%ignore svn_wc_conflict_result_t; #ifdef SWIGRUBY %ignore svn_wc_external_item_create; Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h Wed Feb 25 08:15:39 2015 @@ -542,6 +542,15 @@ svn_cache__get_global_membuffer_cache(vo svn_cache__info_t * svn_cache__membuffer_get_global_info(apr_pool_t *pool); +/** + * Remove all current contents from CACHE. + * + * NOTE: In a multi-threaded environment, new contents may have been put + * into the cache by the time this function returns. + */ +svn_error_t * +svn_cache__membuffer_clear(svn_membuffer_t *cache); + /** @} */ Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_fs_fs_private.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_fs_fs_private.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_fs_fs_private.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_fs_fs_private.h Wed Feb 25 08:15:39 2015 @@ -296,7 +296,7 @@ typedef struct svn_fs_fs__p2l_entry_t { /* offset of the first byte that belongs to the item */ apr_off_t offset; - + /* length of the item in bytes */ apr_off_t size; Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_packed_data.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_packed_data.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_packed_data.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_packed_data.h Wed Feb 25 08:15:39 2015 @@ -221,7 +221,7 @@ svn_packed__byte_count(svn_packed__byte_ /* Return the next number from STREAM as unsigned integer. Returns 0 when * reading beyond the end of the stream. */ -apr_uint64_t +apr_uint64_t svn_packed__get_uint(svn_packed__int_stream_t *stream); /* Return the next number from STREAM as signed integer. Returns 0 when Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_repos_private.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_repos_private.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_repos_private.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_repos_private.h Wed Feb 25 08:15:39 2015 @@ -164,7 +164,7 @@ typedef struct svn_repos__config_pool_t /* Create a new configuration pool object with a lifetime determined by * POOL and return it in *CONFIG_POOL. - * + * * The THREAD_SAFE flag indicates whether the pool actually needs to be * thread-safe and POOL must be also be thread-safe if this flag is set. */ @@ -293,19 +293,13 @@ svn_repos__adjust_mergeinfo_property(svn apr_pool_t *result_pool, apr_pool_t *scratch_pool); -/* A header entry. - * - * (The headers are currently declared here to be of type apr_array_header_t - * with svn_repos__dumpfile_header_entry_t entries, but the types could - * instead be made opaque.) - */ -typedef struct svn_repos__dumpfile_header_entry_t { - const char *key, *val; -} svn_repos__dumpfile_header_entry_t; +/* A (nearly) opaque representation of an ordered list of header lines. + */ +typedef struct apr_array_header_t svn_repos__dumpfile_headers_t; /* Create an empty set of headers. */ -apr_array_header_t * +svn_repos__dumpfile_headers_t * svn_repos__dumpfile_headers_create(apr_pool_t *pool); /* Push the header (KEY, VAL) onto HEADERS. @@ -313,7 +307,7 @@ svn_repos__dumpfile_headers_create(apr_p * Duplicate the key and value into HEADERS's pool. */ void -svn_repos__dumpfile_header_push(apr_array_header_t *headers, +svn_repos__dumpfile_header_push(svn_repos__dumpfile_headers_t *headers, const char *key, const char *val); @@ -322,20 +316,17 @@ svn_repos__dumpfile_header_push(apr_arra * Duplicate the key and value into HEADERS's pool. */ void -svn_repos__dumpfile_header_pushf(apr_array_header_t *headers, +svn_repos__dumpfile_header_pushf(svn_repos__dumpfile_headers_t *headers, const char *key, const char *val_fmt, ...) __attribute__((format(printf, 3, 4))); /* Write to STREAM the headers in HEADERS followed by a blank line. - * - * HEADERS is an array of struct {const char *key, *val;}. */ svn_error_t * svn_repos__dump_headers(svn_stream_t *stream, - apr_array_header_t *headers, - svn_boolean_t terminate, + svn_repos__dumpfile_headers_t *headers, apr_pool_t *scratch_pool); /* Write a revision record to DUMP_STREAM for revision REVISION with revision @@ -384,7 +375,7 @@ svn_repos__dump_revision_record(svn_stre */ svn_error_t * svn_repos__dump_node_record(svn_stream_t *dump_stream, - apr_array_header_t *headers, + svn_repos__dumpfile_headers_t *headers, svn_stringbuf_t *props_str, svn_boolean_t has_text, svn_filesize_t text_content_length, Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_sorts_private.h Wed Feb 25 08:15:39 2015 @@ -28,7 +28,7 @@ #ifndef SVN_SORTS_PRIVATE_H #define SVN_SORTS_PRIVATE_H -#include "../svn_sorts.h" +#include "../svn_sorts.h" #ifdef __cplusplus extern "C" { Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_sqlite.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_sqlite.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_sqlite.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_sqlite.h Wed Feb 25 08:15:39 2015 @@ -63,7 +63,7 @@ typedef enum svn_sqlite__mode_e { typedef svn_error_t *(*svn_sqlite__func_t)(svn_sqlite__context_t *sctx, int argc, svn_sqlite__value_t *values[], - apr_pool_t *scatch_pool); + void *baton); /* Step the given statement; if it returns SQLITE_DONE, reset the statement. Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h Wed Feb 25 08:15:39 2015 @@ -306,7 +306,7 @@ svn__fnv1a_32(const void *input, apr_siz /** * Return a 32 bit modified FNV-1a checksum for the first @a len bytes in * @a input. - * + * * @note This is a proprietary checksumming algorithm based FNV-1a with * approximately the same strength. It is up to 4 times faster * than plain FNV-1a for longer data blocks. @@ -416,7 +416,7 @@ typedef struct svn_hash__entry_t /** Reads a single key-value pair from @a stream and returns it in the * caller-provided @a *entry (members don't need to be pre-initialized). * @a pool is used to allocate members of @a *entry and for tempoaries. - * + * * @see #svn_hash_read2 for more details. * * @since New in 1.9. @@ -652,7 +652,7 @@ svn_config__get_default_config(apr_hash_ */ /* This opaque data struct is an alternative to an INT->VOID hash. - * + * * Technically, it is an automatically growing packed bit array. * All indexes not previously set are implicitly 0 and setting it will * grow the array as needed. Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_wc_private.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_wc_private.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/private/svn_wc_private.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/private/svn_wc_private.h Wed Feb 25 08:15:39 2015 @@ -380,15 +380,13 @@ svn_wc__status2_from_3(svn_wc_status2_t apr_pool_t *result_pool, apr_pool_t *scratch_pool); - /** * Set @a *children to a new array of the immediate children of the working * node at @a dir_abspath. The elements of @a *children are (const char *) * absolute paths. * - * Include children that are scheduled for deletion. Iff @a show_hidden - * is true, also include children that are 'excluded' or 'server-excluded' or - * 'not-present'. + * Include children that are scheduled for deletion, but not those that + * are excluded, server-excluded or not-present. * * Return every path that refers to a child of the working node at * @a dir_abspath. Do not include a path just because it was a child of a @@ -402,24 +400,20 @@ svn_error_t * svn_wc__node_get_children_of_working_node(const apr_array_header_t **children, svn_wc_context_t *wc_ctx, const char *dir_abspath, - svn_boolean_t show_hidden, apr_pool_t *result_pool, apr_pool_t *scratch_pool); /** - * Like svn_wc__node_get_children_of_working_node(), except also include any - * path that was a child of a deleted directory that existed at - * @a dir_abspath, even if that directory is now scheduled to be replaced by - * the working node at @a dir_abspath. + * Gets the immediate 'not-present' children of a node. + * + * #### Needed during 'svn cp WC URL' to handle mixed revision cases */ svn_error_t * -svn_wc__node_get_children(const apr_array_header_t **children, - svn_wc_context_t *wc_ctx, - const char *dir_abspath, - svn_boolean_t show_hidden, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - +svn_wc__node_get_not_present_children(const apr_array_header_t **children, + svn_wc_context_t *wc_ctx, + const char *dir_abspath, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool); /** * Fetch the repository information for the working version @@ -519,26 +513,6 @@ svn_wc__node_get_origin(svn_boolean_t *i apr_pool_t *scratch_pool); /** - * Set @a *deleted_ancestor_abspath to the root of the delete operation - * that deleted @a local_abspath. If @a local_abspath itself was deleted - * and has no deleted ancestor, @a *deleted_ancestor_abspath will equal - * @a local_abspath. If @a local_abspath was not deleted, - * set @a *deleted_ancestor_abspath to @c NULL. - * - * A node is considered 'deleted' if it is deleted or moved-away, and is - * not replaced. - * - * @a *deleted_ancestor_abspath is allocated in @a result_pool. - * Use @a scratch_pool for all temporary allocations. - */ -svn_error_t * -svn_wc__node_get_deleted_ancestor(const char **deleted_ancestor_abspath, - svn_wc_context_t *wc_ctx, - const char *local_abspath, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - -/** * Set @a *not_present to TRUE when @a local_abspath has status * svn_wc__db_status_not_present. Set @a *user_excluded to TRUE when * @a local_abspath has status svn_wc__db_status_excluded. Set @@ -943,15 +917,17 @@ svn_wc__get_excluded_subtrees(apr_hash_t /* Indicate in @a *is_modified whether the working copy has local * modifications, using context @a wc_ctx. - * Use @a scratch_pool for temporary allocations. * - * This function provides a subset of the functionality of - * svn_wc_revision_status2() and is more efficient if the caller - * doesn't need all information returned by svn_wc_revision_status2(). */ + * If IGNORE_UNVERSIONED, unversioned paths inside the tree rooted by + * LOCAL_ABSPATH are not seen as a change, otherwise they are. + * (svn:ignored paths are always ignored) + * + * Use @a scratch_pool for temporary allocations. */ svn_error_t * svn_wc__has_local_mods(svn_boolean_t *is_modified, svn_wc_context_t *wc_ctx, const char *local_abspath, + svn_boolean_t ignore_unversioned, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *scratch_pool); @@ -1259,6 +1235,44 @@ svn_wc__resolve_relative_external_url(co apr_pool_t *result_pool, apr_pool_t *scratch_pool); +typedef enum svn_wc__external_description_format_t +{ + /* LOCALPATH [-r PEG] URL */ + svn_wc__external_description_format_1 = 0, + + /* [-r REV] URL[@PEG] LOCALPATH, introduced in Subversion 1.5 */ + svn_wc__external_description_format_2 +} svn_wc__external_description_format_t; + +/* Additional information about what the external's parser has parsed. */ +typedef struct svn_wc__externals_parser_info_t +{ + /* The syntax format used by the external description. */ + svn_wc__external_description_format_t format; + + /* The string used for defining the operative revision, i.e. + "-rN", "-rHEAD", or "-r{DATE}". + NULL if revision was not given. */ + const char *rev_str; + + /* The string used for defining the peg revision (equals rev_str in + format 1, is "@N", or "@HEAD" or "@{DATE}" in format 2). + NULL if peg revision was not given. */ + const char *peg_rev_str; + +} svn_wc__externals_parser_info_t; + +/* Like svn_wc_parse_externals_description3() but returns an additional array + * with elements of type svn_wc__externals_parser_info_t in @a *parser_infos_p. + * @a parser_infos_p may be NULL if not required by the caller. + */ +svn_error_t * +svn_wc__parse_externals_description(apr_array_header_t **externals_p, + apr_array_header_t **parser_infos_p, + const char *defining_directory, + const char *desc, + svn_boolean_t canonicalize_url, + apr_pool_t *pool); /** * Set @a *editor and @a *edit_baton to an editor that generates @@ -1816,7 +1830,7 @@ svn_wc__acquire_write_lock_for_resolve(c * If ROOT_RELPATH is not NULL, set *ROOT_RELPATH to the target of the diff * within the diff namespace. ("" or a single path component). * - * If ROOT_IS_FILE is NOT NULL set it + * If ROOT_IS_FILE is NOT NULL set it * the first processor call. (The anchor is LOCAL_ABSPATH or an ancestor of it) */ svn_error_t * Modified: subversion/branches/reuse-ra-session/subversion/include/svn_auth.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_auth.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_auth.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_auth.h Wed Feb 25 08:15:39 2015 @@ -884,7 +884,7 @@ svn_auth_get_platform_specific_client_pr * @note An administrative password reset may invalidate the account's * secret key. This function will detect that situation and behave as * if the password were not cached at all. - * @deprecated Provided for backwards compatibility with the 1.8 API. Use + * @deprecated Provided for backwards compatibility with the 1.8 API. Use * svn_auth_get_platform_specific_provider with provider_name of "windows" * and provider_type of "simple". */ Modified: subversion/branches/reuse-ra-session/subversion/include/svn_cache_config.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_cache_config.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_cache_config.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_cache_config.h Wed Feb 25 08:15:39 2015 @@ -43,7 +43,7 @@ extern "C" { @note Do not extend this data structure as this would break binary compatibility. - + @since New in 1.7. */ typedef struct svn_cache_config_t Modified: subversion/branches/reuse-ra-session/subversion/include/svn_client.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_client.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_client.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_client.h Wed Feb 25 08:15:39 2015 @@ -2724,7 +2724,7 @@ svn_client_status(svn_revnum_t *result_r * * If @a include_merged_revisions is set, log information for revisions * which have been merged to @a targets will also be returned. - * + * * If @a revprops is NULL, retrieve all revision properties; else, retrieve * only the revision properties named by the (const char *) array elements * (i.e. retrieve none if the array is empty). @@ -4492,6 +4492,41 @@ typedef struct svn_client_copy_source_t * If @a ignore_externals is set, don't process externals definitions * as part of this operation. * + * If @a metadata_only is @c TRUE and copying a file in a working copy, + * everything in the metadata is updated as if the node is moved, but the + * actual disk copy operation is not performed. This feature is useful for + * clients that want to keep the working copy in sync while the actual working + * copy is updated by some other task. + * + * If @a pin_externals is set, pin URLs in copied externals definitions + * to their current revision unless they were already pinned to a + * particular revision. A pinned external uses a URL which points at a + * fixed revision, rather than the HEAD revision. Externals in the copy + * destination are pinned to either a working copy base revision or the + * HEAD revision of a repository (as of the time the copy operation is + * performed), depending on the type of the copy source: + <pre> + copy source: working copy (WC) REPOS + ------------+------------------------+---------------------------+ + copy WC | external's WC BASE rev | external's repos HEAD rev | + dest: |------------------------+---------------------------+ + REPOS | external's WC BASE rev | external's repos HEAD rev | + ------------+------------------------+---------------------------+ + </pre> + * If the copy source is a working copy, then all externals must be checked + * out, be at a single-revision, contain no local modifications, and contain + * no switched subtrees. Else, #SVN_ERR_WC_PATH_UNEXPECTED_STATUS is returned. + * + * If non-NULL, @a externals_to_pin restricts pinning to a subset of externals. + * It is a hash table keyed by either a local absolute path or a URL at which + * an svn:externals property is set. The hash table contains apr_array_header_t* + * elements as returned by svn_wc_parse_externals_description3(). These arrays + * contain elements of type svn_wc_external_item2_t*, each of which corresponds + * to a single line of an svn:externals definition. Externals corresponding to + * these items will be pinned, other externals will not be pinned. + * If @a externals_to_pin is @c NULL then all externals are pinned. + * If @a pin_externals is @c FALSE then @a externals_to_pin is ignored. + * * If non-NULL, @a revprop_table is a hash table holding additional, * custom revision properties (<tt>const char *</tt> names mapped to * <tt>svn_string_t *</tt> values) to be set on the new revision in @@ -4510,8 +4545,32 @@ typedef struct svn_client_copy_source_t * @a commit_callback with @a commit_baton and a #svn_commit_info_t for * the commit. * + * @since New in 1.9. + */ +svn_error_t * +svn_client_copy7(const apr_array_header_t *sources, + const char *dst_path, + svn_boolean_t copy_as_child, + svn_boolean_t make_parents, + svn_boolean_t ignore_externals, + svn_boolean_t metadata_only, + svn_boolean_t pin_externals, + const apr_hash_t *externals_to_pin, + const apr_hash_t *revprop_table, + svn_commit_callback2_t commit_callback, + void *commit_baton, + svn_client_ctx_t *ctx, + apr_pool_t *pool); + +/** + * Similar to svn_client_copy7(), but doesn't support meta_data_only + * and cannot pin externals. + * + * * @since New in 1.7. + * @deprecated Provided for backward compatibility with the 1.8 API. */ +SVN_DEPRECATED svn_error_t * svn_client_copy6(const apr_array_header_t *sources, const char *dst_path, Modified: subversion/branches/reuse-ra-session/subversion/include/svn_cmdline.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_cmdline.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_cmdline.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_cmdline.h Wed Feb 25 08:15:39 2015 @@ -342,7 +342,7 @@ svn_cmdline_auth_plaintext_passphrase_pr * * @a trust_server_cert_other_failure: If @c TRUE, accept certificates * even if any other verification failure than the above occured. - * + * * @a cfg is the @c SVN_CONFIG_CATEGORY_CONFIG configuration, and * @a cancel_func and @a cancel_baton control the cancellation of the * prompting providers that are initialized. @@ -370,7 +370,7 @@ svn_cmdline_create_auth_baton2(svn_auth_ /* Like svn_cmdline_create_auth_baton2, but with only one trust_server_cert * option which corresponds to trust_server_cert_unknown_ca. - * + * * @deprecated Provided for backward compatibility with the 1.8 API. * @since New in 1.6. */ Modified: subversion/branches/reuse-ra-session/subversion/include/svn_diff.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_diff.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_diff.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_diff.h Wed Feb 25 08:15:39 2015 @@ -1056,7 +1056,7 @@ typedef struct svn_diff_hunk_t svn_diff_ /** * Allocate @a *stringbuf in @a result_pool, and read into it one line * of the diff text of @a hunk. The hunk header is not returned only the - * unidiff data lines (starting with '+', '-', or ' ') are returned. + * unidiff data lines (starting with '+', '-', or ' ') are returned. * If the @a hunk is being interpreted in reverse (i.e. the reverse * parameter of svn_diff_parse_next_patch() was @c TRUE), the diff * text will be returned in reversed form. @@ -1067,7 +1067,7 @@ typedef struct svn_diff_hunk_t svn_diff_ * Temporary allocations will be performed in @a scratch_pool. * * @note The hunk header information can be retrieved with the following - * functions: + * functions: * @see svn_diff_hunk_get_original_start() * @see svn_diff_hunk_get_original_length() * @see svn_diff_hunk_get_modified_start() Modified: subversion/branches/reuse-ra-session/subversion/include/svn_fs.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_fs.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_fs.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_fs.h Wed Feb 25 08:15:39 2015 @@ -152,7 +152,7 @@ typedef struct svn_fs_t svn_fs_t; * * It is not ready for general production use. Please consult the * respective release notes on suggested usage scenarios. - * + * * @since New in 1.9. */ #define SVN_FS_TYPE_FSX "fsx" @@ -346,12 +346,12 @@ typedef enum svn_fs_upgrade_notify_actio svn_fs_upgrade_format_bumped } svn_fs_upgrade_notify_action_t; -/** The type of a upgrade notification function. @a number is specifc +/** The type of a upgrade notification function. @a number is specifc * to @a action (see #svn_fs_upgrade_notify_action_t); @a action is the * type of action being performed. @a baton is the corresponding baton * for the notification function, and @a pool can be used for temporary * allocations, but will be cleared between invocations. - * + * * @since New in 1.9. */ typedef svn_error_t *(*svn_fs_upgrade_notify_t)(void *baton, @@ -393,7 +393,7 @@ svn_fs_upgrade2(const char *path, * Like svn_fs_upgrade2 but with notify_func, notify_baton, cancel_func * and cancel_baton being set to NULL. * - * @deprecated Provided for backward compatibility with the 1.8 API. + * @deprecated Provided for backward compatibility with the 1.8 API. * @since New in 1.5. */ SVN_DEPRECATED @@ -449,7 +449,7 @@ svn_fs_path(svn_fs_t *fs, * Return a shallow copy of the configuration parameters used to open * @a fs, allocated in @a pool. It may be @c NULL. The contents of the * hash contents remains valid only for @a fs's lifetime. - * + * * @note This is just what was passed to svn_fs_create() or svn_fs_open(). * You may not modify it. * @@ -872,7 +872,7 @@ svn_fs_access_add_lock_token(svn_fs_acce */ /** Defines the possible ways two arbitrary nodes may be related. - * + * * @since New in 1.9. */ typedef enum svn_fs_node_relation_t @@ -1137,7 +1137,7 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p, * new revision will have svn:date set to the current time at some * point during the commit and any svn:date on the transaction will be * lost. - * + * * If @a conflict_p is non-zero, use it to provide details on any * conflicts encountered merging @a txn with the most recent committed * revisions. If a conflict occurs, set @a *conflict_p to the path of Modified: subversion/branches/reuse-ra-session/subversion/include/svn_io.h URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_io.h?rev=1662177&r1=1662176&r2=1662177&view=diff ============================================================================== --- subversion/branches/reuse-ra-session/subversion/include/svn_io.h (original) +++ subversion/branches/reuse-ra-session/subversion/include/svn_io.h Wed Feb 25 08:15:39 2015 @@ -693,7 +693,7 @@ svn_io_files_contents_three_same_p(svn_b * * Use @a pool for memory allocations. * - * @since + * @since */ svn_error_t * svn_io_file_create(const char *file, @@ -720,7 +720,7 @@ svn_io_file_create_bytes(const char *fil apr_pool_t *pool); /** Create an empty file at utf8-encoded path @a file. - * + * * @a file must not already exist. If an error occurs while * closing the file, attempt to delete the file before returning the error. *
