You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/08/11 00:07:31 UTC
svn commit: r984234 [3/20] - in /subversion/branches/ignore-mergeinfo: ./
build/ build/ac-macros/ build/generator/ notes/ notes/api-errata/
notes/obliterate/ notes/obliterate/fspec-cc1/ notes/rename-tracking/
notes/svnpatch/ notes/tree-conflicts/ notes...
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java Tue Aug 10 22:07:24 2010
@@ -26,6 +26,7 @@ package org.tigris.subversion.javahl;
import java.util.Set;
import java.io.OutputStream;
import java.io.InputStream;
+import java.io.File;
import java.io.IOException;
/**
@@ -101,7 +102,8 @@ public class SVNAdmin
throws ClientException
{
try {
- aSVNAdmin.create(path, disableFsyncCommit, keepLog, configPath,
+ aSVNAdmin.create(new File(path), disableFsyncCommit, keepLog,
+ configPath == null ? null : new File(configPath),
fstype);
} catch (org.apache.subversion.javahl.ClientException ex) {
throw new ClientException(ex);
@@ -120,7 +122,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.deltify(path,
+ aSVNAdmin.deltify(new File(path),
start == null ? null : start.toApache(),
end == null ? null : end.toApache());
}
@@ -167,11 +169,11 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.dump(path, new OutputWrapper(dataOut),
- new OutputWrapper(errorOut),
+ aSVNAdmin.dump(new File(path), new OutputWrapper(dataOut),
start == null ? null : start.toApache(),
end == null ? null : end.toApache(),
- incremental, useDeltas);
+ incremental, useDeltas,
+ new ReposNotifyHandler(errorOut));
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -192,7 +194,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.hotcopy(path, targetPath, cleanLogs);
+ aSVNAdmin.hotcopy(new File(path), new File(targetPath), cleanLogs);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -211,7 +213,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.listDBLogs(path, receiver);
+ aSVNAdmin.listDBLogs(new File(path), receiver);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -230,7 +232,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.listUnusedDBLogs(path, receiver);
+ aSVNAdmin.listUnusedDBLogs(new File(path), receiver);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -290,10 +292,10 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.load(path, new InputWrapper(dataInput),
- new OutputWrapper(messageOutput),
+ aSVNAdmin.load(new File(path), new InputWrapper(dataInput),
ignoreUUID, forceUUID, usePreCommitHook,
- usePostCommitHook, relativePath);
+ usePostCommitHook, relativePath,
+ new ReposNotifyHandler(messageOutput));
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -312,7 +314,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.lstxns(path, receiver);
+ aSVNAdmin.lstxns(new File(path), receiver);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -330,7 +332,7 @@ public class SVNAdmin
{
try
{
- return aSVNAdmin.recover(path);
+ return aSVNAdmin.recover(new File(path), null);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -349,7 +351,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.rmtxns(path, transactions);
+ aSVNAdmin.rmtxns(new File(path), transactions);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -372,7 +374,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.setRevProp(path,
+ aSVNAdmin.setRevProp(new File(path),
rev == null ? null : rev.toApache(),
"svn:log", message,
!bypassHooks, !bypassHooks);
@@ -406,7 +408,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.setRevProp(path,
+ aSVNAdmin.setRevProp(new File(path),
rev == null ? null : rev.toApache(),
propName, propValue,
usePreRevPropChangeHook,
@@ -434,9 +436,10 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.verify(path, new OutputWrapper(messageOut),
+ aSVNAdmin.verify(new File(path),
start == null ? null : start.toApache(),
- end == null ? null : end.toApache());
+ end == null ? null : end.toApache(),
+ new ReposNotifyHandler(messageOut));
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -456,7 +459,8 @@ public class SVNAdmin
try
{
Set<org.apache.subversion.javahl.Lock> aLocks =
- aSVNAdmin.lslocks(path);
+ aSVNAdmin.lslocks(
+ new File(path));
Lock[] locks = new Lock[aLocks.size()];
int i = 0;
@@ -486,7 +490,7 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.rmlocks(path, locks);
+ aSVNAdmin.rmlocks(new File(path), locks);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
@@ -547,4 +551,106 @@ public class SVNAdmin
inputer.close();
}
}
+
+ private class ReposNotifyHandler
+ implements org.apache.subversion.javahl.callback.ReposNotifyCallback
+ {
+ private OutputInterface outputer;
+
+ public ReposNotifyHandler(OutputInterface outputer)
+ {
+ this.outputer = outputer;
+ }
+
+ public void onNotify(org.apache.subversion.javahl.ReposNotifyInformation
+ info)
+ {
+ String val;
+
+ switch (info.getAction())
+ {
+ case warning:
+ val = info.getWarning();
+ break;
+
+ case dump_rev_end:
+ val = "* Dumped revision " + info.getRevision() + ".\n";
+ break;
+
+ case verify_rev_end:
+ val = "* Verified revision " + info.getRevision() + ".\n";
+ break;
+
+ case load_txn_committed:
+ if (info.getOldRevision() == Revision.SVN_INVALID_REVNUM)
+ val = "\n------- Committed revision " +
+ info.getNewRevision() + " >>>\n\n";
+ else
+ val = "\n------- Committed new rev " +
+ info.getNewRevision() +
+ " (loaded from original rev " +
+ info.getOldRevision() +
+ ") >>>\n\n";
+ break;
+
+ case load_node_start:
+ switch (info.getNodeAction())
+ {
+ case change:
+ val = " * editing path : " + info.getPath() +
+ " ...";
+ break;
+
+ case deleted:
+ val = " * deleting path : " + info.getPath() +
+ " ...";
+ break;
+
+ case add:
+ val = " * adding path : " + info.getPath() +
+ " ...";
+ break;
+
+ case replace:
+ val = " * replacing path : " + info.getPath() +
+ " ...";
+ break;
+
+ default:
+ val = null;
+ }
+ break;
+
+ case load_node_done:
+ val = " done.\n";
+ break;
+
+ case load_copied_node:
+ val = "COPIED...";
+ break;
+
+ case load_txn_start:
+ val = "<<< Started new transaction, based on " +
+ "original revision " + info.getOldRevision() + "\n";
+ break;
+
+ case load_normalized_mergeinfo:
+ val = " removing '\\r' from svn:mergeinfo ...";
+ break;
+
+ default:
+ val = null;
+ }
+
+ if (val != null)
+ try
+ {
+ outputer.write(val.getBytes());
+ }
+ catch (IOException ex)
+ {
+ ; // ignore
+ }
+ }
+ }
}
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Tue Aug 10 22:07:24 2010
@@ -603,9 +603,9 @@ public class SVNClient implements SVNCli
public void notification2(final Notify2 notify)
{
aSVNClient.notification2(
- new org.apache.subversion.javahl.callback.NotifyCallback () {
+ new org.apache.subversion.javahl.callback.ClientNotifyCallback () {
public void onNotify(
- org.apache.subversion.javahl.NotifyInformation aInfo)
+ org.apache.subversion.javahl.ClientNotifyInformation aInfo)
{
notify.onNotify(new NotifyInformation(aInfo));
}
@@ -2248,7 +2248,19 @@ public class SVNClient implements SVNCli
{
try
{
- return new Info(aSVNClient.info(path));
+ final List<org.apache.subversion.javahl.Info2> infos =
+ new ArrayList<org.apache.subversion.javahl.Info2>();
+ aSVNClient.info2(path,
+ org.apache.subversion.javahl.Revision.HEAD,
+ org.apache.subversion.javahl.Revision.HEAD,
+ org.apache.subversion.javahl.Depth.empty,
+ null, new org.apache.subversion.javahl.callback.InfoCallback()
+ {
+ public void singleInfo(org.apache.subversion.javahl.Info2 info) {
+ infos.add(info);
+ }
+ });
+ return new Info(infos.get(0));
}
catch (org.apache.subversion.javahl.ClientException ex)
{
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Tue Aug 10 22:07:24 2010
@@ -129,58 +129,6 @@ public class BasicTests extends SVNTests
}
/**
- * Tests Subversion path validation.
- */
- public void testPathValidation() throws Throwable
- {
- // Rather than segfaulting, JavaHL considers null an invalid path.
- assertFalse("Path validation produced false-positive for null path",
- Path.isValid(null));
-
- String path = "valid-path";
- assertTrue("Validation check of valid path '" + path +
- "' should succeed", Path.isValid(path));
-
- // File names cannot contain control characters.
- path = "invalid-\u0001-path";
- assertFalse("Validation check of invalid path '" + path +
- "' (which contains control characters) should fail",
- Path.isValid(path));
- }
-
- /**
- * Tests Subversion path as URL predicate.
- */
- public void testPathIsURL() throws Throwable
- {
- try
- {
- Path.isURL(null);
- fail("A null path should raise an exception");
- }
- catch (IllegalArgumentException expected)
- {
- }
-
- // Subversion "paths" which aren't URLs.
- String[] paths = { "/path", "c:\\path" };
- for (String path : paths)
- {
- assertFalse("'" + path + "' should not be considered a URL",
- Path.isURL(path));
- }
-
- // Subversion "paths" which are URLs.
- paths = new String[] { "http://example.com", "svn://example.com",
- "svn+ssh://example.com", "file:///src/svn/" };
- for (String path : paths)
- {
- assertTrue("'" + path + "' should be considered a URL",
- Path.isURL(path));
- }
- }
-
- /**
* Tests Mergeinfo and RevisionRange classes.
* @since 1.5
*/
@@ -2447,11 +2395,11 @@ public class BasicTests extends SVNTests
// Add a "begin merge" notification handler.
final Revision[] actualRange = new Revision[2];
- NotifyCallback notify = new NotifyCallback()
+ ClientNotifyCallback notify = new ClientNotifyCallback()
{
- public void onNotify(NotifyInformation info)
+ public void onNotify(ClientNotifyInformation info)
{
- if (info.getAction() == NotifyInformation.Action.merge_begin)
+ if (info.getAction() == ClientNotifyInformation.Action.merge_begin)
{
RevisionRange r = info.getMergeRange();
actualRange[0] = r.getFromRevision();
@@ -2785,6 +2733,42 @@ public class BasicTests extends SVNTests
return thisTest;
}
+
+ /**
+ * Test the patch API. This doesn't yet test the results, it only ensures
+ * that execution goes down to the C layer and back.
+ * @throws Throwable
+ */
+ public void testPatch() throws SubversionException, IOException
+ {
+ OneTest thisTest = new OneTest(true);
+ File patchInput = new File(super.localTmp, thisTest.testName);
+ final String iotaPath = thisTest.getWCPath().replace('\\', '/') + "/iota";
+ final String NL = System.getProperty("line.separator");
+
+ final String patchText = "Index: iota" + NL +
+ "===================================================================" + NL +
+ "--- iota\t(revision 1)" + NL +
+ "+++ iota\t(working copy)" + NL +
+ "@@ -1 +1,2 @@" + NL +
+ " This is the file 'iota'." + NL +
+ "+No, this is *really* the file 'iota'." + NL;
+
+ PrintWriter writer = new PrintWriter(new FileOutputStream(patchInput));
+ writer.print(patchText);
+ writer.flush();
+ writer.close();
+
+ client.patch(patchInput.getAbsolutePath(), iotaPath, false, 0,
+ false, true, true,
+ new PatchCallback() {
+ public boolean singlePatch(String pathFromPatchfile,
+ String patchPath, String rejectPath) {
+ // Do nothing, right now.
+ return false;
+ }
+ });
+ }
/**
* Test the {@link SVNClientInterface.diff()} APIs.
@@ -3084,9 +3068,9 @@ public class BasicTests extends SVNTests
{
// build the test setup
OneTest thisTest = new OneTest();
- NotifyCallback notify = new NotifyCallback()
+ ClientNotifyCallback notify = new ClientNotifyCallback()
{
- public void onNotify(NotifyInformation info)
+ public void onNotify(ClientNotifyInformation info)
{
client.isAdminDirectory(".svn");
}
@@ -3102,9 +3086,9 @@ public class BasicTests extends SVNTests
{
// build the test setup
OneTest thisTest = new OneTest();
- NotifyCallback notify = new NotifyCallback()
+ ClientNotifyCallback notify = new ClientNotifyCallback()
{
- public void onNotify(NotifyInformation info)
+ public void onNotify(ClientNotifyInformation info)
{
try
{
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java Tue Aug 10 22:07:24 2010
@@ -63,7 +63,7 @@ public class SVNAdminTests extends SVNTe
{
OneTest thisTest = new OneTest(false);
final String MSG = "Initial repository creation";
- admin.setRevProp(thisTest.getRepositoryPath(), Revision.getInstance(0),
+ admin.setRevProp(thisTest.getRepository(), Revision.getInstance(0),
"svn:log", MSG, false, false);
Map<String, byte[]> pdata = client.revProperties(
makeReposUrl(thisTest.getRepository()),
@@ -72,6 +72,32 @@ public class SVNAdminTests extends SVNTe
String logMessage = new String(pdata.get("svn:log"));
assertEquals("expect rev prop change to take effect", MSG, logMessage);
}
+
+ /* This test only tests the call down to the C++ layer. */
+ public void testVerify()
+ throws SubversionException, IOException
+ {
+ OneTest thisTest = new OneTest(false);
+ admin.verify(thisTest.getRepository(), Revision.getInstance(0),
+ Revision.HEAD, null);
+ }
+
+ /* This test only tests the call down to the C++ layer. */
+ public void testUpgrade()
+ throws SubversionException, IOException
+ {
+ OneTest thisTest = new OneTest(false);
+ admin.upgrade(thisTest.getRepository(), null);
+ }
+
+ /* This test only tests the call down to the C++ layer. */
+ public void testPack()
+ throws SubversionException, IOException
+ {
+ OneTest thisTest = new OneTest(false);
+ admin.pack(thisTest.getRepository(), null);
+ }
+
public void testLoadRepo()
throws SubversionException, IOException
{
@@ -101,9 +127,8 @@ public class SVNAdminTests extends SVNTe
"subversion/bindings/javahl");
File dump = new File(testSrcdir, "tests/data/issue2979.dump");
InputStream input = new FileInputStream(dump);
- OutputStream loadLog = new IgnoreOutputer();
- admin.load(thisTest.getRepositoryPath(),
- input, loadLog, true, true, false, false, null);
+ admin.load(thisTest.getRepository(),
+ input, true, true, false, false, null, null);
// should have two revs after the load
infoHolder[0] = null;
client.info2(repoUrl, Revision.HEAD, Revision.HEAD,
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Tue Aug 10 22:07:24 2010
@@ -233,15 +233,13 @@ class SVNTests extends TestCase
File greekFiles = buildGreekFiles();
greekRepos = new File(localTmp, "repos");
greekDump = new File(localTmp, "greek_dump");
- admin.create(greekRepos.getAbsolutePath(), true,false, null,
- this.fsType);
+ admin.create(greekRepos, true,false, null, this.fsType);
addExpectedCommitItem(greekFiles.getAbsolutePath(), null, null,
NodeKind.none, CommitItemStateFlags.Add);
client.doImport(greekFiles.getAbsolutePath(), makeReposUrl(greekRepos),
null, Depth.infinity, false, false, null);
- admin.dump(greekRepos.getAbsolutePath(),
- new FileOutputStream(greekDump), new IgnoreOutputer(),
- null, null, false, false);
+ admin.dump(greekRepos, new FileOutputStream(greekDump),
+ null, null, false, false, null);
}
/**
@@ -429,18 +427,6 @@ class SVNTests extends TestCase
}
/**
- * internal class extends OutputStream, but ignores the data
- */
- public class IgnoreOutputer extends OutputStream
- {
- public void write(int b) throws IOException
- {
- /* Just do nothing. */
- return;
- }
- }
-
- /**
* Represents the repository and (possibly) the working copy for
* one test.
*/
@@ -569,15 +555,6 @@ class SVNTests extends TestCase
}
/**
- * Return the name of the directory of the repository
- * @return the name of repository directory
- */
- public String getRepositoryPath()
- {
- return repository.getAbsolutePath();
- }
-
- /**
* Return the working copy directory
* @return the working copy directory
*/
@@ -659,14 +636,11 @@ class SVNTests extends TestCase
File repos = new File(repositories, this.testName);
removeDirOrFile(repos);
// create and load the repository from the default repository dump
- admin.create(repos.getAbsolutePath(), true, false,
- conf.getAbsolutePath(), fsType);
+ admin.create(repos, true, false, conf, fsType);
if (loadGreek)
{
- admin.load(repos.getAbsolutePath(),
- new FileInputStream(greekDump),
- new IgnoreOutputer(), false, false, false, false,
- null);
+ admin.load(repos, new FileInputStream(greekDump), false, false,
+ false, false, null, null);
}
return repos;
}
@@ -832,7 +806,7 @@ class SVNTests extends TestCase
}
}
- class MyNotifier implements NotifyCallback
+ class MyNotifier implements ClientNotifyCallback
{
/**
@@ -842,7 +816,7 @@ class SVNTests extends TestCase
*
* @param info everything to know about this event
*/
- public void onNotify(NotifyInformation info)
+ public void onNotify(ClientNotifyInformation info)
{
}
}
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/swig/python/tests/wc.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/swig/python/tests/wc.py?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/swig/python/tests/wc.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/swig/python/tests/wc.py Tue Aug 10 22:07:24 2010
@@ -178,7 +178,7 @@ class SubversionWorkingCopyTestCase(unit
target,
None, # SvnConfig
True, # recursive
- False, # get_all
+ True, # get_all
False, # no_ignore
status_func,
None, # cancel_func
@@ -212,9 +212,11 @@ class SubversionWorkingCopyTestCase(unit
def test_get_pristine_copy_path(self):
path_to_file = '%s/trunk/README.txt' % self.path
- path_to_text_base = '%s/trunk/%s/text-base/README.txt.svn-base' % (self.path,
- wc.get_adm_dir())
- self.assertEqual(path_to_text_base, wc.get_pristine_copy_path(path_to_file))
+ path_to_text_base = wc.get_pristine_copy_path(path_to_file)
+ text_base = open(path_to_text_base).read()
+ # TODO: This test should modify the working file first, to ensure the
+ # path isn't just the path to the working file.
+ self.assertEqual(text_base, 'A test.\n')
def test_entries_read(self):
entries = wc.entries_read(self.wc, True)
@@ -439,8 +441,11 @@ class SubversionWorkingCopyTestCase(unit
self.assertEqual(got_diffs, expected_diffs)
def tearDown(self):
- wc.adm_close(self.wc)
- core.svn_io_remove_dir(self.path)
+ try:
+ wc.adm_close(self.wc)
+ core.svn_io_remove_dir(self.path)
+ except:
+ print('Error in tearDown: %s' % sys.exc_info()[0])
self.fs = None
self.repos = None
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/svn/core.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/svn/core.rb?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/svn/core.rb (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/svn/core.rb Tue Aug 10 22:07:24 2010
@@ -669,16 +669,16 @@ module Svn
def infinity_or_empty_from_recurse(depth_or_recurse)
case depth_or_recurse
- when true : DEPTH_INFINITY
- when false : DEPTH_EMPTY
+ when true then DEPTH_INFINITY
+ when false then DEPTH_EMPTY
else depth_or_recurse
end
end
def infinity_or_immediates_from_recurse(depth_or_recurse)
case depth_or_recurse
- when true : DEPTH_INFINITY
- when false : DEPTH_IMMEDIATES
+ when true then DEPTH_INFINITY
+ when false then DEPTH_IMMEDIATES
else depth_or_recurse
end
end
Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/test/test_wc.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/test/test_wc.rb?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/test/test_wc.rb (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/swig/ruby/test/test_wc.rb Tue Aug 10 22:07:24 2010
@@ -1052,9 +1052,9 @@ EOE
Svn::Wc::AdmAccess.open(nil, @wc_path) do |access|
access.set_changelist(path, "456", nil, notify_collector)
end
- assert_equal([[File.expand_path(path), Svn::Error::WcChangelistMove],
- [File.expand_path(path), NilClass]],
- notifies.collect {|notify| [notify.path, notify.err.class]})
+ assert_equal([[File.expand_path(path), Svn::Wc::NOTIFY_CHANGELIST_CLEAR],
+ [File.expand_path(path), Svn::Wc::NOTIFY_CHANGELIST_SET]],
+ notifies.collect {|notify| [notify.path, notify.action]})
notifies = []
Modified: subversion/branches/ignore-mergeinfo/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/private/svn_wc_private.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/private/svn_wc_private.h Tue Aug 10 22:07:24 2010
@@ -44,24 +44,6 @@ extern "C" {
#endif /* __cplusplus */
-/** Similar to svn_wc__get_entry() and svn_wc__entry_versioned().
- *
- * This function allows callers in libsvn_client to directly fetch entry data
- * without having to open up an adm_access baton. Its error and return
- * semantics are the same as svn_wc__entry_versioned(), and parameters are the
- * same as svn_wc__get_entry() (defined in libsvn_wc/entries.h).
- */
-svn_error_t *
-svn_wc__get_entry_versioned(const svn_wc_entry_t **entry,
- svn_wc_context_t *wc_ctx,
- const char *local_abspath,
- svn_node_kind_t kind,
- svn_boolean_t show_hidden,
- svn_boolean_t need_parent_stub,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-
/** Given a @a local_abspath with a @a wc_ctx, set @a *switched to
* TRUE if @a local_abspath is switched, otherwise set @a *switched to FALSE.
* All temporary allocations are done in * @a scratch_pool.
@@ -367,6 +349,20 @@ svn_wc__node_get_url(const char **url,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/**
+ * Set @a *repos_relpath to the corresponding repos_relpath for @a
+ * local_abspath, using @a wc_ctx. If the node is added, return the
+ * repos_relpath it will have in the repository.
+ *
+ * If @a local_abspath is not in the working copy, return @c
+ * SVN_ERR_WC_PATH_NOT_FOUND.
+ * */
+svn_error_t *
+svn_wc__node_get_repos_relpath(const char **repos_relpath,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
/**
* Set @a *copyfrom_url to the corresponding copy-from URL (allocated
@@ -376,14 +372,20 @@ svn_wc__node_get_url(const char **url,
* copy information (versus being a member of the subtree beneath such
* a copy target).
*
- * If @a local_abspath is not copied, set @a *copyfrom_rev to NULL and
+ * @a copyfrom_root_url and @a copyfrom_repos_relpath return the exact same
+ * information as @a copyfrom_url, just still separated as root and relpath.
+ *
+ * If @a local_abspath is not copied, set @a *copyfrom_root_url,
+ * @a *copyfrom_repos_relpath and @a copyfrom_url to NULL and
* @a *copyfrom_rev to @c SVN_INVALID_REVNUM.
*
- * Any of @a copyfrom_url, @a copyfrom_rev, or @a is_copy_target may
- * be NULL if the caller doesn't care about those values.
+ * Any out parameters may be NULL if the caller doesn't care about those
+ * values.
*/
svn_error_t *
-svn_wc__node_get_copyfrom_info(const char **copyfrom_url,
+svn_wc__node_get_copyfrom_info(const char **copyfrom_root_url,
+ const char **copyfrom_repos_relpath,
+ const char **copyfrom_url,
svn_revnum_t *copyfrom_rev,
svn_boolean_t *is_copy_target,
svn_wc_context_t *wc_ctx,
@@ -392,8 +394,8 @@ svn_wc__node_get_copyfrom_info(const cha
apr_pool_t *scratch_pool);
/**
- * Recursively call @a callbacks->found_node for all nodes underneath
- * @a local_abspath.
+ * Recursively call @a walk_callback for all nodes underneath
+ * @a local_abspath, restricted by @a walk_depth.
*/
svn_error_t *
svn_wc__node_walk_children(svn_wc_context_t *wc_ctx,
@@ -622,6 +624,25 @@ svn_wc__node_check_conflicts(svn_boolean
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/**
+ * A hack to remove the last entry from libsvn_client. This simply fetches an
+ * entry, and puts the needed bits into the output parameters, allocated in
+ * @a result_pool. All output arguments can be NULL to indicate that the
+ * caller is not interested in the specific result.
+ *
+ * @a local_abspath and @a wc_ctx are what you think they are.
+ */
+svn_error_t *
+svn_wc__node_get_info_bits(apr_time_t *text_time,
+ const char **conflict_old,
+ const char **conflict_new,
+ const char **conflict_wrk,
+ const char **prejfile,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
/**
* Recursively acquire write locks for @a local_abspath if
@@ -697,6 +718,38 @@ svn_wc__temp_get_keep_local(svn_boolean_
const char *local_abspath,
apr_pool_t *scratch_pool);
+/**
+ * Register @a local_abspath as a new file external aimed at
+ * @a external_url, @a external_peg_rev, and @a external_rev.
+ *
+ * If not @c NULL, @a external_peg_rev and @a external_rev must each
+ * be of kind @c svn_opt_revision_number or @c svn_opt_revision_head.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_wc__register_file_external(svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ const char *external_url,
+ const svn_opt_revision_t *external_peg_rev,
+ const svn_opt_revision_t *external_rev,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Calculates the schedule and copied status of a node as that would
+ * have been stored in an svn_wc_entry_t instance.
+ *
+ * If not @c NULL, @a schedule and @a copied are set to their calculated
+ * values.
+ */
+svn_error_t *
+svn_wc__node_get_schedule(svn_wc_schedule_t *schedule,
+ svn_boolean_t *copied,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ apr_pool_t *scratch_pool);
+
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_client.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_client.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_client.h Tue Aug 10 22:07:24 2010
@@ -469,12 +469,6 @@ typedef struct svn_client_commit_item3_t
* same lifetime as this data structure.
*/
apr_array_header_t *outgoing_prop_changes;
-
- /** adm_access of this item
- *
- * @since New in 1.7.
- * ### This will be obsoleted by WC-NG. */
- svn_wc_adm_access_t *adm_access;
} svn_client_commit_item3_t;
/** The commit candidate structure.
@@ -677,11 +671,16 @@ typedef svn_error_t *(*svn_client_get_co
*/
/** Callback type used by svn_client_blame5() to notify the caller
- * that line @a line_no of the blamed file was last changed in
- * @a revision by @a author on @a date, and that the contents were
+ * that line @a line_no of the blamed file was last changed in @a revision
+ * which has the revision properties @a rev_props, and that the contents were
* @a line.
*
- * If svn_client_blame4() was called with @a include_merged_revisions set to
+ * @a start_revnum and @a end_revnum contain the start and end revision
+ * number of the entire blame operation, as determined from the repository
+ * inside svn_client_blame5(). This can be useful for the blame receiver
+ * to format the blame output.
+ *
+ * If svn_client_blame5() was called with @a include_merged_revisions set to
* TRUE, @a merged_revision, @a merged_rev_props and @a merged_path will be
* set, otherwise they will be NULL. @a merged_path will be set to the
* absolute repository path.
@@ -691,12 +690,14 @@ typedef svn_error_t *(*svn_client_get_co
* @note If there is no blame information for this line, @a revision will be
* invalid and @a rev_props will be NULL. In this case @a local_change
* will be true if the reason there is no blame information is that the line
- * was modified locally, In all other cases @a local_change will be false.
+ * was modified locally. In all other cases @a local_change will be false.
*
* @since New in 1.7.
*/
typedef svn_error_t *(*svn_client_blame_receiver3_t)(
void *baton,
+ svn_revnum_t start_revnum,
+ svn_revnum_t end_revnum,
apr_int64_t line_no,
svn_revnum_t revision,
apr_hash_t *rev_props,
@@ -708,8 +709,9 @@ typedef svn_error_t *(*svn_client_blame_
apr_pool_t *pool);
/**
- * Similar to #svn_client_blame_receiver3_t, but with separate revision
- * properties and without information about local_only changes
+ * Similar to #svn_client_blame_receiver3_t, but with separate author and
+ * date revision properties instead of all revision properties, and without
+ * information about local changes.
*
* @deprecated Provided for backward compatibility with the 1.6 API.
*
@@ -1842,6 +1844,183 @@ svn_client_commit(svn_client_commit_info
*/
/**
+ * Structure for holding the "status" of a working copy item.
+ *
+ * The item's entry data is in @a entry, augmented and possibly shadowed
+ * by the other fields. @a entry is @c NULL if this item is not under
+ * version control.
+ *
+ * @note Fields may be added to the end of this structure in future
+ * versions. Therefore, to preserve binary compatibility, users
+ * should not directly allocate structures of this type.
+ *
+ * @since New in 1.7.
+ */
+typedef struct svn_client_status_t
+{
+ /** The kind of node as recorded in the working copy */
+ svn_node_kind_t kind;
+
+ /** The absolute path to the node */
+ const char *local_abspath;
+
+ /** If the path is under version control, versioned is TRUE, otherwise
+ * FALSE. */
+ svn_boolean_t versioned;
+
+ /** Set to TRUE if the node is the victim of some kind of conflict. */
+ svn_boolean_t conflicted;
+
+ /** The status of the node, based on the restructuring changes and if the
+ * node has no restructuring changes the text and prop status. */
+ enum svn_wc_status_kind node_status;
+
+ /** The status of the text of the node, not including restructuring changes.
+ * Valid values are: svn_wc_status_none, svn_wc_status_normal,
+ * svn_wc_status_modified and svn_wc_status_conflicted. */
+ enum svn_wc_status_kind text_status;
+
+ /** The status of the entry's properties.
+ * Valid values are: svn_wc_status_none, svn_wc_status_normal,
+ * svn_wc_status_modified and svn_wc_status_conflicted. */
+ enum svn_wc_status_kind prop_status;
+
+ /** a node can be 'locked' if a working copy update is in progress or
+ * was interrupted. */
+ svn_boolean_t locked;
+
+ /** a file or directory can be 'copied' if it's scheduled for
+ * addition-with-history (or part of a subtree that is scheduled as such.).
+ */
+ svn_boolean_t copied;
+
+ /** Base revision. */
+ svn_revnum_t revision;
+
+ /** Last revision this was changed */
+ svn_revnum_t changed_rev;
+
+ /** Date of last commit. */
+ apr_time_t changed_date;
+
+ /** Last commit author of this item */
+ const char *changed_author;
+
+ /** The URL of the repository */
+ const char *repos_root_url;
+
+ /** The in-repository path relative to the repository root.
+ * Use svn_path_url_component2() to join this value to the
+ * repos_root_url to get the full URL.
+ */
+ const char *repos_relpath;
+
+ /** a file or directory can be 'switched' if the switch command has been
+ * used. If this is TRUE, then file_external will be FALSE.
+ */
+ svn_boolean_t switched;
+
+ /** If the item is a file that was added to the working copy with an
+ * svn:externals; if file_external is TRUE, then switched is always
+ * FALSE.
+ */
+ svn_boolean_t file_external;
+
+ /** The locally present lock. (Values of path, token, owner, comment and
+ * are available if a lock is present) */
+ const svn_lock_t *lock;
+
+ /** Which changelist this item is part of, or NULL if not part of any. */
+ const char *changelist;
+
+ /** The depth of the node as recorded in the working copy
+ * (#svn_depth_unknown for files or when no depth is recorded) */
+ svn_depth_t depth;
+
+ /**
+ * @defgroup svn_wc_status_ood WC out-of-date info from the repository
+ * @{
+ *
+ * When the working copy item is out-of-date compared to the
+ * repository, the following fields represent the state of the
+ * youngest revision of the item in the repository. If the working
+ * copy is not out of date, the fields are initialized as described
+ * below.
+ */
+
+ /** Set to the node kind of the youngest commit, or #svn_node_none
+ * if not out of date. */
+ svn_node_kind_t ood_kind;
+
+ /** The status of the node, based on the text status if the node has no
+ * restructuring changes */
+ enum svn_wc_status_kind repos_node_status;
+
+ /** The entry's text status in the repository. */
+ enum svn_wc_status_kind repos_text_status;
+
+ /** The entry's property status in the repository. */
+ enum svn_wc_status_kind repos_prop_status;
+
+ /** The entry's lock in the repository, if any. */
+ const svn_lock_t *repos_lock;
+
+ /** Set to the youngest committed revision, or #SVN_INVALID_REVNUM
+ * if not out of date. */
+ svn_revnum_t ood_changed_rev;
+
+ /** Set to the most recent commit date, or @c 0 if not out of date. */
+ apr_time_t ood_changed_date;
+
+ /** Set to the user name of the youngest commit, or @c NULL if not
+ * out of date or non-existent. Because a non-existent @c
+ * svn:author property has the same behavior as an out-of-date
+ * working copy, examine @c ood_last_cmt_rev to determine whether
+ * the working copy is out of date. */
+ const char *ood_changed_author;
+
+ /** @} */
+
+ /** Reserved for libsvn_clients internal use; this value is only to be used for
+ * libsvn_client backwards compatibility wrappers, This value may be NULL or
+ * to other data in future versions. */
+ const void *backwards_compatibility_baton;
+
+ /* NOTE! Please update svn_client_status_dup() when adding new fields here. */
+} svn_client_status_t;
+
+/**
+ * Return a duplicate of @a status, allocated in @a result_pool. No part of the new
+ * structure will be shared with @a status.
+ *
+ * @since New in 1.7.
+ */
+svn_client_status_t *
+svn_client_status_dup(const svn_client_status_t *status,
+ apr_pool_t *result_pool);
+
+/**
+ * A callback for reporting a @a status about @a local_abspath.
+ *
+ * @a baton is a closure object; it should be provided by the
+ * implementation, and passed by the caller.
+ *
+ * @a scratch_pool will be cleared between invocations to the callback.
+ *
+ * ### we might be revamping the status infrastructure, and this callback
+ * ### could totally disappear by the end of 1.7 development. however, we
+ * ### need to mark the STATUS parameter as "const" so that it is easier
+ * ### to reason about who/what can modify those structures.
+ *
+ * @since New in 1.7.
+ */
+typedef svn_error_t *(*svn_client_status_func_t)(
+ void *baton,
+ const char *path,
+ const svn_client_status_t *status,
+ apr_pool_t *scratch_pool);
+
+/**
* Given @a path to a working copy directory (or single file), call
* @a status_func/status_baton with a set of #svn_wc_status_t *
* structures which describe the status of @a path, and its children
@@ -1887,10 +2066,9 @@ svn_client_commit(svn_client_commit_info
*/
svn_error_t *
svn_client_status5(svn_revnum_t *result_rev,
+ svn_client_ctx_t *ctx,
const char *path,
const svn_opt_revision_t *revision,
- svn_wc_status_func4_t status_func,
- void *status_baton,
svn_depth_t depth,
svn_boolean_t get_all,
svn_boolean_t update,
@@ -1898,7 +2076,8 @@ svn_client_status5(svn_revnum_t *result_
svn_boolean_t ignore_externals,
svn_boolean_t ignore_mergeinfo,
const apr_array_header_t *changelists,
- svn_client_ctx_t *ctx,
+ svn_client_status_func_t status_func,
+ void *status_baton,
apr_pool_t *scratch_pool);
/**
@@ -2345,6 +2524,10 @@ svn_client_blame(const char *path_or_url
* against their copyfrom source, and will appear in the diff output
* in their entirety, as if they were newly added.
*
+ * If @a use_git_diff_format is TRUE, then the git's extended diff format
+ * will be used.
+ * ### Do we need to say more about the format? A reference perhaps?
+ *
* Generated headers are encoded using @a header_encoding.
*
* Diff output will not be generated for binary files, unless @a
@@ -2353,7 +2536,9 @@ svn_client_blame(const char *path_or_url
*
* @a diff_options (an array of <tt>const char *</tt>) is used to pass
* additional command line options to the diff processes invoked to compare
- * files.
+ * files. @a diff_options is allowed to be @c NULL, in which case a value
+ * for this option might still be obtained from the Subversion configuration
+ * file via client context @a ctx.
*
* The authentication baton cached in @a ctx is used to communicate with
* the repository.
@@ -2390,6 +2575,7 @@ svn_client_diff5(const apr_array_header_
svn_boolean_t no_diff_deleted,
svn_boolean_t show_copies_as_adds,
svn_boolean_t ignore_content_type,
+ svn_boolean_t use_git_diff_format,
svn_boolean_t ignore_mergeinfo,
const char *header_encoding,
apr_file_t *outfile,
@@ -2401,7 +2587,8 @@ svn_client_diff5(const apr_array_header_
/**
* Similar to svn_client_diff5(), but with @a ignore_mergeinfo passed as
- * @c FALSE and @a show_copies_as_adds set to @c FALSE.
+ * @c FALSE, @a show_copies_as_adds set to @c FALSE and @a use_git_diff_format
+ * set to @c FALSE.
*
* @deprecated Provided for backward compatibility with the 1.6 API.
*
@@ -2525,6 +2712,7 @@ svn_client_diff_peg5(const apr_array_hea
svn_boolean_t no_diff_deleted,
svn_boolean_t ignore_content_type,
svn_boolean_t show_copies_as_adds,
+ svn_boolean_t use_git_diff_format,
svn_boolean_t ignore_mergeinfo,
const char *header_encoding,
apr_file_t *outfile,
@@ -2536,7 +2724,8 @@ svn_client_diff_peg5(const apr_array_hea
/**
* Similar to svn_client_diff_peg5(), but with @a ignore_mergeinfo passed
- * as @a FALSE @a show_copies_as_adds set to @c FALSE.
+ * as @a FALSE, @a show_copies_as_adds set to @c FALSE and
+ * @a use_git_diff_format set to @c FALSE.
*
* @deprecated Provided for backward compatibility with the 1.6 API.
*
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_config.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_config.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_config.h Tue Aug 10 22:07:24 2010
@@ -97,6 +97,7 @@ typedef struct svn_config_t svn_config_t
#define SVN_CONFIG_SECTION_HELPERS "helpers"
#define SVN_CONFIG_OPTION_EDITOR_CMD "editor-cmd"
#define SVN_CONFIG_OPTION_DIFF_CMD "diff-cmd"
+#define SVN_CONFIG_OPTION_DIFF_EXTENSIONS "diff-extensions"
#define SVN_CONFIG_OPTION_DIFF3_CMD "diff3-cmd"
#define SVN_CONFIG_OPTION_DIFF3_HAS_PROGRAM_ARG "diff3-has-program-arg"
#define SVN_CONFIG_OPTION_MERGE_TOOL_CMD "merge-tool-cmd"
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_diff.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_diff.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_diff.h Tue Aug 10 22:07:24 2010
@@ -771,6 +771,21 @@ svn_diff_mem_string_output_merge(svn_str
* rather than parse it, see svn_client_patch(). */
/**
+ * Describes what operation has been performed on a file.
+ *
+ * @since New in 1.7.
+ */
+typedef enum svn_diff_operation_kind_e
+{
+ svn_diff_op_added,
+ svn_diff_op_deleted,
+ svn_diff_op_copied,
+ svn_diff_op_moved,
+ /* There's no tree changes, just text modifications. */
+ svn_diff_op_modified
+}svn_diff_operation_kind_t;
+
+/**
* A single hunk inside a patch
*
* @since New in 1.7. */
@@ -852,6 +867,15 @@ typedef struct svn_patch_t {
* An array containing an svn_hunk_t object for each hunk parsed
* from the patch. */
apr_array_header_t *hunks;
+
+ /**
+ * A hash table containing an array of svn_hunk_t object for each property
+ * parsed from the patch. The property names act as keys. */
+ apr_hash_t *property_hunks;
+
+ /**
+ * Represents the operation performed on the file. */
+ svn_diff_operation_kind_t operation;
} svn_patch_t;
/**
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_dirent_uri.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_dirent_uri.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_dirent_uri.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_dirent_uri.h Tue Aug 10 22:07:24 2010
@@ -256,9 +256,9 @@ svn_dirent_dirname(const char *dirent,
* @since New in 1.7.
*/
void
-svn_dirent_split(const char *dirent,
- const char **dirpath,
+svn_dirent_split(const char **dirpath,
const char **base_name,
+ const char *dirent,
apr_pool_t *pool);
/** Divide the canonicalized @a relpath into @a *dirpath and @a
@@ -280,9 +280,9 @@ svn_dirent_split(const char *dirent,
* @since New in 1.7.
*/
void
-svn_relpath_split(const char *relpath,
- const char **dirpath,
+svn_relpath_split(const char **dirpath,
const char **base_name,
+ const char *relpath,
apr_pool_t *pool);
/** Get the basename of the specified canonicalized @a relpath. The
@@ -338,9 +338,9 @@ svn_relpath_dirname(const char *relpath,
* @since New in 1.7.
*/
void
-svn_uri_split(const char *dirent,
- const char **dirpath,
+svn_uri_split(const char **dirpath,
const char **base_name,
+ const char *uri,
apr_pool_t *pool);
/** Get the basename of the specified canonicalized @a uri. The
@@ -763,7 +763,7 @@ svn_uri_condense_targets(const char **pc
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
-/* Check that when @a path is joined to @a base_path, the resulting path
+/** Check that when @a path is joined to @a base_path, the resulting path
* is still under BASE_PATH in the local filesystem. If not, return @c FALSE.
* If @c TRUE is returned, @a *full_path will be set to the absolute path
* of @a path, allocated in @a pool.
@@ -779,6 +779,26 @@ svn_dirent_is_under_root(char **full_pat
const char *path,
apr_pool_t *pool);
+/** Set @a *dirent to the path corresponding to the file:// URL @a url, using
+ * the platform-specific file:// rules.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_uri_get_dirent_from_file_url(const char **dirent,
+ const char *url,
+ apr_pool_t *pool);
+
+/** Set @a *url to a file:// URL, corresponding to @a dirent using the
+ * platform specific dirent and file:// rules.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_uri_get_file_url_from_dirent(const char **url,
+ const char *dirent,
+ apr_pool_t *pool);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_error_codes.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_error_codes.h Tue Aug 10 22:07:24 2010
@@ -470,7 +470,9 @@ SVN_ERROR_START
SVN_ERR_WC_CATEGORY_START + 28,
"Failed to locate 'copyfrom' path in working copy")
- /** @since New in 1.5. */
+ /** @since New in 1.5.
+ * @deprecated This event is not an error, and is now reported
+ * via the standard notification mechanism instead. */
SVN_ERRDEF(SVN_ERR_WC_CHANGELIST_MOVE,
SVN_ERR_WC_CATEGORY_START + 29,
"Moving a path from one changelist to another")
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_fs.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_fs.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_fs.h Tue Aug 10 22:07:24 2010
@@ -1894,6 +1894,10 @@ svn_fs_revision_proplist(apr_hash_t **ta
* - @a fs is a filesystem, and @a rev is the revision in that filesystem
* whose property should change.
* - @a name is the name of the property to change.
+ * - if @a old_value_p is not @c NULL, then @a *old_value_p is the expected old
+ * value of the property, and changing the value will fail with error
+ * #SVN_ERR_BAD_PROPERTY_VALUE if the present value of the property is not @a
+ * *old_value_p.
* - @a value is the new value of the property, or zero if the property should
* be removed altogether.
*
@@ -1902,8 +1906,26 @@ svn_fs_revision_proplist(apr_hash_t **ta
* via transactions.
*
* Do any necessary temporary allocation in @a pool.
+ *
+ * @since New in 1.7.
*/
svn_error_t *
+svn_fs_change_rev_prop2(svn_fs_t *fs,
+ svn_revnum_t rev,
+ const char *name,
+ const svn_string_t *const *old_value_p,
+ const svn_string_t *value,
+ apr_pool_t *pool);
+
+
+/**
+ * Similar to svn_fs_change_rev_prop2(), but with @a old_value_p passed as
+ * @c NULL.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
svn_fs_change_rev_prop(svn_fs_t *fs,
svn_revnum_t rev,
const char *name,
@@ -2104,6 +2126,11 @@ typedef svn_error_t *(*svn_fs_get_locks_
* get_locks_func / @a get_locks_baton. Use @a pool for necessary
* allocations.
*
+ * @a depth limits the reported locks to those associated with paths
+ * within the specified depth of @a path, and must be one of the
+ * following values: #svn_depth_empty, #svn_depth_files,
+ * #svn_depth_immediates, or #svn_depth_infinity.
+ *
* If the @a get_locks_func callback implementation returns an error,
* lock iteration will terminate and that error will be returned by
* this function.
@@ -2115,7 +2142,24 @@ typedef svn_error_t *(*svn_fs_get_locks_
* start a new Berkeley DB transaction (which is most of this svn_fs
* API). Yes, this is a nasty implementation detail to have to be
* aware of. We hope to fix this problem in the future.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_fs_get_locks2(svn_fs_t *fs,
+ const char *path,
+ svn_depth_t depth,
+ svn_fs_get_locks_callback_t get_locks_func,
+ void *get_locks_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_fs_get_locks2(), but with @a depth always passed as
+ * svn_depth_infinity.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_fs_get_locks(svn_fs_t *fs,
const char *path,
@@ -2143,7 +2187,15 @@ typedef enum
svn_fs_pack_notify_start = 0,
/** packing of the shard is completed */
- svn_fs_pack_notify_end
+ svn_fs_pack_notify_end,
+
+ /** packing of the shard revprops has commenced
+ @since New in 1.7. */
+ svn_fs_pack_notify_start_revprop,
+
+ /** packing of the shard revprops has completed
+ @since New in 1.7. */
+ svn_fs_pack_notify_end_revprop
} svn_fs_pack_notify_action_t;
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_io.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_io.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_io.h Tue Aug 10 22:07:24 2010
@@ -130,7 +130,8 @@ svn_io_check_resolved_path(const char *p
* utf-8 encoded @a filename, in the directory @a dirpath. The file handle is
* returned in @a *file, and the name, which ends with @a suffix, is returned
* in @a *unique_name, also utf8-encoded. Either @a file or @a unique_name
- * may be @c NULL.
+ * may be @c NULL. If @a file is @c NULL, the file will be created but not
+ * open.
*
* If @a delete_when is #svn_io_file_del_on_close, then the @c APR_DELONCLOSE
* flag will be used when opening the file. The @c APR_BUFFERED flag will
@@ -187,10 +188,11 @@ svn_io_open_uniquely_named(apr_file_t **
apr_pool_t *scratch_pool);
-/** Create a writable file in the directory @a dirpath. The file will have
- * an arbitrary and unique name, and the full path will be returned in
- * @a temp_path. The file will be returned in @a file. Both will be
- * allocated from @a result_pool.
+/** Create a writable file, with an arbitrary and unique name, in the
+ * directory @a dirpath. Set @a *temp_path to its full path, and set
+ * @a *file to the file handle, both allocated from @a result_pool. Either
+ * @a file or @a unique_name may be @c NULL. If @a file is @c NULL, the file
+ * will be created but not open.
*
* If @a dirpath is @c NULL, use the path returned from svn_io_temp_dir().
* (Note that when using the system-provided temp directory, it may not
@@ -299,6 +301,8 @@ svn_io_copy_file(const char *src,
/** Copy permission flags from @a src onto the file at @a dst. Both
* filenames are utf8-encoded filenames.
+ *
+ * @since New in 1.6.
*/
svn_error_t *
svn_io_copy_perms(const char *src,
@@ -1891,6 +1895,16 @@ svn_io_dir_read(apr_finfo_t *finfo,
apr_dir_t *thedir,
apr_pool_t *pool);
+/** Wrapper for apr_file_name_get(). @a *filename is utf8-encoded.
+ *
+ * @note The file name may be NULL.
+ *
+ * @since New in 1.7. */
+svn_error_t *
+svn_io_file_name_get(const char **filename,
+ apr_file_t *file,
+ apr_pool_t *pool);
+
/** Version/format files.
@@ -1919,14 +1933,6 @@ svn_io_write_version_file(const char *pa
int version,
apr_pool_t *pool);
-/** Wrapper for apr_file_name_get().
- *
- * @since New in 1.7. */
-svn_error_t *
-svn_io_file_name_get(const char **filename,
- apr_file_t *file,
- apr_pool_t *pool);
-
/** @} */
#ifdef __cplusplus
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_opt.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_opt.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_opt.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_opt.h Tue Aug 10 22:07:24 2010
@@ -744,29 +744,6 @@ svn_opt_print_help(apr_getopt_t *os,
const char *footer,
apr_pool_t *pool);
-/* Return, in @a *true_targets_p, a copy of @a targets with peg revision
- * specifiers snipped off the end of each element.
- *
- * This function is useful for subcommands for which peg revisions
- * do not make any sense. Such subcommands still need to allow peg
- * revisions to be specified on the command line so that users of
- * the command line client can consistently escape '@' characters
- * in filenames by appending an '@' character, regardless of the
- * subcommand being used.
- *
- * If a peg revision is present but cannot be parsed, an error is thrown.
- * The user has likely forgotten to escape an '@' character in a filename.
- *
- * It is safe to pass the address of @a targets as @a true_targets_p.
- *
- * Do all allocations in @a pool.
- *
- * @since New in 1.7. */
-svn_error_t *
-svn_opt_eat_peg_revisions(apr_array_header_t **true_targets_p,
- const apr_array_header_t *targets,
- apr_pool_t *pool);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_ra.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_ra.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_ra.h Tue Aug 10 22:07:24 2010
@@ -1155,7 +1155,10 @@ svn_ra_do_switch(svn_ra_session_t *sessi
* represented by the @a session's URL, or empty if the entire directory
* is meant to be examined.
*
- * Get status only as deeply as @a depth indicates.
+ * Get status as deeply as @a depth indicates. If @a depth is
+ * #svn_depth_unknown, get the status down to the ambient depth of the
+ * working copy. If @depth is deeper than the working copy, include changes
+ * that would be needed to populate the working copy to that depth.
*
* The caller may not perform any RA operations using @a session
* before finishing the report, and may not perform any RA operations
@@ -1689,6 +1692,11 @@ svn_ra_get_lock(svn_ra_session_t *sessio
* Set @a *locks to a hashtable which represents all locks on or
* below @a path.
*
+ * @a depth limits the returned locks to those associated with paths
+ * within the specified depth of @a path, and must be one of the
+ * following values: #svn_depth_empty, #svn_depth_files,
+ * #svn_depth_immediates, or #svn_depth_infinity.
+ *
* The hashtable maps (const char *) absolute fs paths to (const
* svn_lock_t *) structures. The hashtable -- and all keys and
* values -- are allocated in @a pool.
@@ -1700,8 +1708,23 @@ svn_ra_get_lock(svn_ra_session_t *sessio
* server doesn't implement it, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is
* returned.
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_ra_get_locks2(svn_ra_session_t *session,
+ apr_hash_t **locks,
+ const char *path,
+ svn_depth_t depth,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_ra_get_locks2(), but with @a depth always passed as
+ * #svn_depth_infinity.
+ *
* @since New in 1.2.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_ra_get_locks(svn_ra_session_t *session,
apr_hash_t **locks,
Modified: subversion/branches/ignore-mergeinfo/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/include/svn_repos.h?rev=984234&r1=984233&r2=984234&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/include/svn_repos.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/include/svn_repos.h Tue Aug 10 22:07:24 2010
@@ -56,6 +56,25 @@ const svn_version_t *
svn_repos_version(void);
+/* Some useful enums. They need to be declared here for the notification
+ system to pick them up. */
+/** The different "actions" attached to nodes in the dumpfile. */
+enum svn_node_action
+{
+ svn_node_action_change,
+ svn_node_action_add,
+ svn_node_action_delete,
+ svn_node_action_replace
+};
+
+/** The different policies for processing the UUID in the dumpfile. */
+enum svn_repos_load_uuid
+{
+ svn_repos_load_uuid_default,
+ svn_repos_load_uuid_ignore,
+ svn_repos_load_uuid_force
+};
+
/** Callback type for checking authorization on paths produced by (at
* least) svn_repos_dir_delta2().
@@ -164,6 +183,134 @@ typedef svn_error_t *(*svn_repos_file_re
apr_pool_t *pool);
+/* Notification system. */
+
+/** The type of action occuring.
+ *
+ * @since New in 1.7.
+ */
+typedef enum svn_repos_notify_action_t
+{
+ /** A warning message is waiting. */
+ svn_repos_notify_warning = 0,
+
+ /** A revision has finished being dumped. */
+ svn_repos_notify_dump_rev_end,
+
+ /** A revision has finished being verified. */
+ svn_repos_notify_verify_rev_end,
+
+ /** packing of an FSFS shard has commenced */
+ svn_repos_notify_pack_shard_start,
+
+ /** packing of an FSFS shard is completed */
+ svn_repos_notify_pack_shard_end,
+
+ /** packing of the shard revprops has commenced */
+ svn_repos_notify_pack_shard_start_revprop,
+
+ /** packing of the shard revprops has completed */
+ svn_repos_notify_pack_shard_end_revprop,
+
+ /** A revision has begun loading */
+ svn_repos_notify_load_txn_start,
+
+ /** A revision has finished loading */
+ svn_repos_notify_load_txn_committed,
+
+ /** A node has begun loading */
+ svn_repos_notify_load_node_start,
+
+ /** A node has finished loading */
+ svn_repos_notify_load_node_done,
+
+ /** A copied node has been encountered */
+ svn_repos_notify_load_copied_node,
+
+ /** Mergeinfo has been normalized */
+ svn_repos_notify_load_normalized_mergeinfo,
+
+ /** The operation has acquired a mutex for the repo. */
+ svn_repos_notify_mutex_acquired,
+
+ /** Recover has started. */
+ svn_repos_notify_recover_start,
+
+ /** Upgrade has started. */
+ svn_repos_notify_upgrade_start
+
+} svn_repos_notify_action_t;
+
+/**
+ * Structure used by #svn_repos_notify_func_t.
+ *
+ * The only field guaranteed to be populated is @c action. Other fields are
+ * dependent upon the @c action. (See individual fields for more information.)
+ *
+ * @note Callers of notification functions should use
+ * svn_repos_notify_create() to create structures of this type to allow for
+ * future extensibility.
+ *
+ * @since New in 1.7.
+ */
+typedef struct svn_repos_notify_t
+{
+ /** Action that describes what happened in the repository. */
+ svn_repos_notify_action_t action;
+
+ /** For #svn_repos_notify_dump_rev_end and #svn_repos_notify_verify_rev_end,
+ * the revision which just completed. */
+ svn_revnum_t revision;
+
+ /** For #svn_repos_notify_warning, the warning text. */
+ const char *warning;
+
+ /** For #svn_repos_notify_pack_shard_start,
+ #svn_repos_notify_pack_shard_end,
+ #svn_repos_notify_pack_shard_start_revprop, and
+ #svn_repos_notify_pack_shard_end_revprop, the shard processed. */
+ apr_int64_t shard;
+
+ /** For #svn_repos_notify_load_commited_rev, the revision committed. */
+ svn_revnum_t new_revision;
+
+ /** For #svn_repos_notify_load_commited_rev, the source revision, if
+ different from #new_revision, otherwise #SVN_INVALID_REVNUM.
+ For #svn_repos_notify_load_txn_start, the source revision. */
+ svn_revnum_t old_revision;
+
+ /** For #svn_repos_notify_load_node_start, the action being taken on the
+ node. */
+ enum svn_node_action node_action;
+
+ /** For #svn_repos_notify_load_node_start, the path of the node. */
+ const char *path;
+
+ /* NOTE: Add new fields at the end to preserve binary compatibility.
+ Also, if you add fields here, you have to update
+ svn_repos_notify_create(). */
+} svn_repos_notify_t;
+
+/** Callback for providing notification from the repository.
+ * Returns @a void. Justification: success of an operation is not dependent
+ * upon successful notification of that operation.
+ *
+ * @since New in 1.7. */
+typedef void (*svn_repos_notify_func_t)(void *baton,
+ const svn_repos_notify_t *notify,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Allocate an #svn_repos_notify_t structure in @a result_pool, initialize
+ * and return it.
+ *
+ * @since New in 1.7.
+ */
+svn_repos_notify_t *
+svn_repos_notify_create(svn_repos_notify_action_t action,
+ apr_pool_t *result_pool);
+
+
/** The repository object. */
typedef struct svn_repos_t svn_repos_t;
@@ -244,8 +391,23 @@ svn_repos_create(svn_repos_t **repos_p,
* It does *not* guarantee the most optimized repository state as a
* dump and subsequent load would.
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_upgrade2(const char *path,
+ svn_boolean_t nonblocking,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_upgrade2(), but with @a start_callback and baton,
+ * rather than a notify_callback / baton
+ *
* @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_upgrade(const char *path,
svn_boolean_t nonblocking,
@@ -320,8 +482,24 @@ svn_repos_hotcopy(const char *src_path,
* Possibly update the repository, @a repos, to use a more efficient
* filesystem representation. Use @a pool for allocations.
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_fs_pack2(svn_repos_t *repos,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_fs_pack2(), but with a #svn_fs_pack_notify_t instead
+ * of a #svn_repos_notify_t.
+ *
* @since New in 1.6.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_fs_pack(svn_repos_t *repos,
svn_fs_pack_notify_t notify_func,
@@ -330,7 +508,6 @@ svn_repos_fs_pack(svn_repos_t *repos,
void *cancel_baton,
apr_pool_t *pool);
-
/**
* Run database recovery procedures on the repository at @a path,
* returning the database to a consistent state. Use @a pool for all
@@ -343,8 +520,8 @@ svn_repos_fs_pack(svn_repos_t *repos,
* If @a nonblocking is TRUE, an error of type EWOULDBLOCK is
* returned if the lock is not immediately available.
*
- * If @a start_callback is not NULL, it will be called with @a
- * start_callback_baton as argument before the recovery starts, but
+ * If @a notify_func is not NULL, it will be called with @a
+ * notify_baton as argument before the recovery starts, but
* after the exclusive lock has been acquired.
*
* If @a cancel_func is not @c NULL, it is called periodically with
@@ -356,8 +533,25 @@ svn_repos_fs_pack(svn_repos_t *repos,
* by a single threaded process, or by a multi-threaded process when
* no other threads are accessing the repository.
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_recover4(const char *path,
+ svn_boolean_t nonblocking,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ svn_cancel_func_t cancel_func,
+ void * cancel_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_recover4(), but with @a start callback in place of
+ * the notify_func / baton.
+ *
* @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_recover3(const char *path,
svn_boolean_t nonblocking,
@@ -1706,7 +1900,7 @@ svn_repos_fs_begin_txn_for_update(svn_fs
/** @defgroup svn_repos_fs_locks Repository lock wrappers
* @{
- * @since New in 1.2. */
+ */
/** Like svn_fs_lock(), but invoke the @a repos's pre- and
* post-lock hooks before and after the locking action. Use @a pool
@@ -1721,6 +1915,8 @@ svn_repos_fs_begin_txn_for_update(svn_fs
* The pre-lock hook may cause a different token to be used for the
* lock, instead of @a token; see the pre-lock-hook documentation for
* more.
+ *
+ * @since New in 1.2.
*/
svn_error_t *
svn_repos_fs_lock(svn_lock_t **lock,
@@ -1744,6 +1940,8 @@ svn_repos_fs_lock(svn_lock_t **lock,
* hook, return the original error wrapped with
* SVN_ERR_REPOS_POST_UNLOCK_HOOK_FAILED. If the caller sees this
* error, it knows that the unlock succeeded anyway.
+ *
+ * @since New in 1.2.
*/
svn_error_t *
svn_repos_fs_unlock(svn_repos_t *repos,
@@ -1760,7 +1958,31 @@ svn_repos_fs_unlock(svn_repos_t *repos,
* authz_read_func and @a authz_read_baton to "screen" all returned
* locks. That is: do not return any locks on any paths that are
* unreadable in HEAD, just silently omit them.
+ *
+ * @a depth limits the returned locks to those associated with paths
+ * within the specified depth of @a path, and must be one of the
+ * following values: #svn_depth_empty, #svn_depth_files,
+ * #svn_depth_immediates, or #svn_depth_infinity.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_fs_get_locks2(apr_hash_t **locks,
+ svn_repos_t *repos,
+ const char *path,
+ svn_depth_t depth,
+ svn_repos_authz_func_t authz_read_func,
+ void *authz_read_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_fs_get_locks2(), but with @a depth always
+ * passed as svn_depth_infinity.
+ *
+ * @since New in 1.2.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_fs_get_locks(apr_hash_t **locks,
svn_repos_t *repos,
@@ -2098,33 +2320,6 @@ svn_repos_node_from_baton(void *edit_bat
#define SVN_REPOS_DUMPFILE_TEXT_DELTA_BASE_CHECKSUM \
SVN_REPOS_DUMPFILE_TEXT_DELTA_BASE_MD5
-/** The different "actions" attached to nodes in the dumpfile. */
-enum svn_node_action
-{
- svn_node_action_change,
- svn_node_action_add,
- svn_node_action_delete,
- svn_node_action_replace
-};
-
-/** The different policies for processing the UUID in the dumpfile. */
-enum svn_repos_load_uuid
-{
- svn_repos_load_uuid_default,
- svn_repos_load_uuid_ignore,
- svn_repos_load_uuid_force
-};
-
-/** Callback for providing per revision progress while dumping or verifying
- * the repository.
- *
- * @since New in 1.7. */
-typedef svn_error_t *(*svn_repos_notify_func_t)(void *baton,
- svn_revnum_t rev,
- const char *warning_text,
- apr_pool_t *scratch_pool);
-
-
/**
* Verify the contents of the file system in @a repos.
*
@@ -2260,8 +2455,7 @@ svn_repos_dump_fs(svn_repos_t *repos,
/**
* Read and parse dumpfile-formatted @a dumpstream, reconstructing
* filesystem revisions in already-open @a repos, handling uuids in
- * accordance with @a uuid_action. If non-@c NULL, send feedback to
- * @a feedback_stream. Use @a pool for all allocation.
+ * accordance with @a uuid_action. Use @a pool for all allocation.
*
* If the dumpstream contains copy history that is unavailable in the
* repository, an error will be thrown.
@@ -2285,12 +2479,36 @@ svn_repos_dump_fs(svn_repos_t *repos,
* If @a use_post_commit_hook is set, call the repository's
* post-commit hook after committing each loaded revision.
*
+ * If non-NULL, use @a notify_func and @a notify_baton to send notification
+ * of events to the caller.
+ *
* If @a cancel_func is not @c NULL, it is called periodically with
* @a cancel_baton as argument to see if the client wishes to cancel
* the load.
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_load_fs3(svn_repos_t *repos,
+ svn_stream_t *dumpstream,
+ enum svn_repos_load_uuid uuid_action,
+ const char *parent_dir,
+ svn_boolean_t use_pre_commit_hook,
+ svn_boolean_t use_post_commit_hook,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_load_fs3(), but with @a feedback_stream in place of
+ * the #svn_repos_notify_func_t and baton.
+ *
* @since New in 1.2.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_load_fs2(svn_repos_t *repos,
svn_stream_t *dumpstream,
@@ -2467,8 +2685,27 @@ svn_repos_parse_dumpstream2(svn_stream_t
* Print all parsing feedback to @a outstream (if non-@c NULL).
*
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_get_fs_build_parser3(const svn_repos_parse_fns2_t **parser,
+ void **parse_baton,
+ svn_repos_t *repos,
+ svn_boolean_t use_history,
+ enum svn_repos_load_uuid uuid_action,
+ const char *parent_dir,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_get_fs_build_parser3(), but with @a outstream in place
+ * if a #svn_repos_notify_func_t and baton.
+ *
* @since New in 1.1.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_get_fs_build_parser2(const svn_repos_parse_fns2_t **parser,
void **parse_baton,
@@ -2479,7 +2716,6 @@ svn_repos_get_fs_build_parser2(const svn
const char *parent_dir,
apr_pool_t *pool);
-
/**
* A vtable that is driven by svn_repos_parse_dumpstream().
* Similar to #svn_repos_parse_fns2_t except that it lacks