You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gb...@apache.org on 2013/12/08 18:56:53 UTC
svn commit: r1549081 [4/18] - in
/subversion/branches/invoke-diff-cmd-feature: ./ build/ build/ac-macros/
build/generator/ build/generator/templates/ contrib/server-side/
contrib/server-side/svncutter/ subversion/bindings/javahl/native/
subversion/bind...
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Sun Dec 8 17:56:46 2013
@@ -219,6 +219,33 @@ public class BasicTests extends SVNTests
}
/**
+ * Test RuntimeVersion
+ */
+ public void testRuntimeVersion() throws Throwable
+ {
+ try
+ {
+ RuntimeVersion runtimeVersion = client.getRuntimeVersion();
+ String versionString = runtimeVersion.toString();
+ if (versionString == null || versionString.trim().length() == 0)
+ {
+ throw new Exception("Version string empty");
+ }
+ }
+ catch (Exception e)
+ {
+ fail("RuntimeVersion should always be available unless the " +
+ "native libraries failed to initialize: " + e);
+ }
+
+ RuntimeVersion runtimeVersion = client.getRuntimeVersion();
+ Version version = client.getVersion();
+ assertTrue(runtimeVersion.getMajor() > version.getMajor()
+ || (runtimeVersion.getMajor() == version.getMajor()
+ && runtimeVersion.getMinor() >= version.getMinor()));
+ }
+
+ /**
* Test the JNIError class functionality
* @throws Throwable
*/
@@ -2350,7 +2377,7 @@ public class BasicTests extends SVNTests
List<RevisionRange> ranges = mergeInfo.getRevisions(mergeSrc);
assertTrue("Missing merge info for source '" + mergeSrc + "' on '" +
targetPath + '\'', ranges != null && !ranges.isEmpty());
- RevisionRange range = (RevisionRange) ranges.get(0);
+ RevisionRange range = ranges.get(0);
String expectedMergedRevs = expectedMergeStart + "-" + expectedMergeEnd;
assertEquals("Unexpected first merged revision range for '" +
mergeSrc + "' on '" + targetPath + '\'',
@@ -2613,6 +2640,7 @@ public class BasicTests extends SVNTests
* @throws Throwable
* @since 1.5
*/
+ @SuppressWarnings("deprecation")
public void testMergeReintegrate() throws Throwable
{
OneTest thisTest = setupAndPerformMerge();
@@ -3269,7 +3297,7 @@ public class BasicTests extends SVNTests
// Rigorously inspect one of our DiffSummary notifications.
final String BETA_PATH = "A/B/E/beta";
- DiffSummary betaDiff = (DiffSummary) summaries.get(BETA_PATH);
+ DiffSummary betaDiff = summaries.get(BETA_PATH);
assertNotNull("No diff summary for " + BETA_PATH, betaDiff);
assertEquals("Incorrect path for " + BETA_PATH, BETA_PATH,
betaDiff.getPath());
@@ -3963,6 +3991,8 @@ public class BasicTests extends SVNTests
extends HashMap<String, Collection<String>>
implements ChangelistCallback
{
+ private static final long serialVersionUID = 1L;
+
public void doChangelist(String path, String changelist)
{
path = fileToSVNPath(new File(path), true);
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java Sun Dec 8 17:56:46 2013
@@ -38,6 +38,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.security.MessageDigest;
@@ -162,9 +163,13 @@ public class SVNRemoteTests extends SVNT
}
catch (ClientException ex)
{
- svnErrorCode = ex.getAllMessages().get(0).getCode();
+ List<ClientException.ErrorMessage> msgs = ex.getAllMessages();
+ svnErrorCode = msgs.get(msgs.size() - 1).getCode();
}
- assertEquals(180001, svnErrorCode);
+
+ assertTrue(svnErrorCode == 180001 // file:
+ || svnErrorCode == 210005 // svn:
+ || svnErrorCode == 2); // http:
}
public void testDatedRev() throws Exception
@@ -447,10 +452,13 @@ public class SVNRemoteTests extends SVNT
}
}
- private final class CommitContext implements CommitCallback
+ private static final class CommitContext implements CommitCallback
{
public final ISVNEditor editor;
- public CommitContext(ISVNRemote session, String logstr)
+ public CommitContext(ISVNRemote session, String logstr,
+ ISVNEditor.ProvideBaseCallback getBase,
+ ISVNEditor.ProvidePropsCallback getProps,
+ ISVNEditor.GetNodeKindCallback getKind)
throws ClientException
{
Charset UTF8 = Charset.forName("UTF-8");
@@ -459,7 +467,19 @@ public class SVNRemoteTests extends SVNT
: logstr.getBytes(UTF8));
HashMap<String, byte[]> revprops = new HashMap<String, byte[]>();
revprops.put("svn:log", log);
- editor = session.getCommitEditor(revprops, this, null, false);
+
+ // Run the getCommitEditor overloads through their paces, too.
+ if (getBase == null && getProps == null && getKind == null)
+ editor = session.getCommitEditor(revprops, this, null, false);
+ else
+ editor = session.getCommitEditor(revprops, this, null, false,
+ getBase, getProps, getKind);
+ }
+
+ public CommitContext(ISVNRemote session, String logstr)
+ throws ClientException
+ {
+ this(session, logstr, null, null, null);
}
public void commitInfo(CommitInfo info) { this.info = info; }
@@ -468,11 +488,67 @@ public class SVNRemoteTests extends SVNT
private CommitInfo info;
}
- public void testEditorCopy() throws Exception
+ private static final class EditorCallbacks
+ {
+ private final String wcpath;
+ private final long revision;
+ private final Map<String, byte[]> props;
+ private final NodeKind kind;
+
+ public EditorCallbacks(String wcpath, long revision,
+ Map<String, byte[]> props,
+ NodeKind kind)
+ {
+ this.wcpath = wcpath;
+ this.revision = revision;
+ this.props = props;
+ this.kind = kind;
+ }
+
+ public final ISVNEditor.ProvideBaseCallback getBase =
+ new ISVNEditor.ProvideBaseCallback()
+ {
+ public ISVNEditor.ProvideBaseCallback.ReturnValue
+ getContents(String relpath)
+ {
+ try {
+ return new ISVNEditor.ProvideBaseCallback.ReturnValue(
+ new FileInputStream(wcpath + relpath), revision);
+ } catch (java.io.FileNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+
+ public final ISVNEditor.ProvidePropsCallback getProps =
+ new ISVNEditor.ProvidePropsCallback()
+ {
+ public ISVNEditor.ProvidePropsCallback.ReturnValue
+ getProperties(String relpath)
+ {
+ return new ISVNEditor.ProvidePropsCallback.ReturnValue(
+ props, revision);
+ }
+ };
+
+ public final ISVNEditor.GetNodeKindCallback getKind =
+ new ISVNEditor.GetNodeKindCallback()
+ {
+ public NodeKind getKind(String relpath, long revision)
+ {
+ return kind;
+ }
+ };
+ };
+
+ private void testEditorCopy(EditorCallbacks cb) throws Exception
{
ISVNRemote session = getSession();
CommitContext cc =
- new CommitContext(session, "Copy A/B/lambda -> A/B/omega");
+ (cb != null
+ ? new CommitContext(session, "Copy A/B/lambda -> A/B/omega",
+ cb.getBase, cb.getProps, cb.getKind)
+ : new CommitContext(session, "Copy A/B/lambda -> A/B/omega"));
try {
// FIXME: alter dir A/B first
@@ -493,6 +569,18 @@ public class SVNRemoteTests extends SVNT
Revision.SVN_INVALID_REVNUM));
}
+ public void testEditorCopy() throws Exception
+ {
+ testEditorCopy(null);
+ }
+
+ public void testEditorCopy_WithCallbacks() throws Exception
+ {
+ testEditorCopy(new EditorCallbacks(thisTest.getWCPath(), 1L,
+ new HashMap<String, byte[]>(),
+ NodeKind.file));
+ }
+
public void testEditorMove() throws Exception
{
ISVNRemote session = getSession();
@@ -576,16 +664,23 @@ public class SVNRemoteTests extends SVNT
Revision.SVN_INVALID_REVNUM));
}
- public void testEditorSetDirProps() throws Exception
+ private void testEditorSetDirProps(EditorCallbacks cb) throws Exception
{
Charset UTF8 = Charset.forName("UTF-8");
ISVNRemote session = getSession();
byte[] ignoreval = "*.pyc\n.gitignore\n".getBytes(UTF8);
+ byte[] binaryval = new byte[]{(byte)0, (byte)13, (byte)255, (byte)8,
+ (byte)127, (byte)128, (byte)129};
HashMap<String, byte[]> props = new HashMap<String, byte[]>();
props.put("svn:ignore", ignoreval);
+ props.put("binaryprop", binaryval);
- CommitContext cc = new CommitContext(session, "Add svn:ignore");
+ CommitContext cc =
+ (cb != null
+ ? new CommitContext(session, "Add svn:ignore and binaryprop",
+ cb.getBase, cb.getProps, cb.getKind)
+ : new CommitContext(session, "Add svn:ignore and binaryprop"));
try {
cc.editor.alterDirectory("", 1, null, props);
cc.editor.complete();
@@ -600,6 +695,23 @@ public class SVNRemoteTests extends SVNT
"svn:ignore",
Revision.HEAD,
Revision.HEAD)));
+ assertTrue(Arrays.equals(binaryval,
+ client.propertyGet(session.getSessionUrl(),
+ "binaryprop",
+ Revision.HEAD,
+ Revision.HEAD)));
+ }
+
+ public void testEditorSetDirProps() throws Exception
+ {
+ testEditorSetDirProps(null);
+ }
+
+ public void testEditorSetDirProps_WithCallbacks() throws Exception
+ {
+ testEditorSetDirProps(new EditorCallbacks(thisTest.getWCPath(), 1L,
+ new HashMap<String, byte[]>(),
+ NodeKind.dir));
}
private static byte[] SHA1(byte[] text) throws NoSuchAlgorithmException
@@ -691,7 +803,7 @@ public class SVNRemoteTests extends SVNT
assertEquals(0, propcount);
}
- public void testEditorSetFileContents() throws Exception
+ private void testEditorSetFileContents(EditorCallbacks cb) throws Exception
{
Charset UTF8 = Charset.forName("UTF-8");
ISVNRemote session = getSession();
@@ -701,7 +813,10 @@ public class SVNRemoteTests extends SVNT
ByteArrayInputStream stream = new ByteArrayInputStream(contents);
CommitContext cc =
- new CommitContext(session, "Change contents of A/B/E/alpha");
+ (cb != null
+ ? new CommitContext(session, "Change contents of A/B/E/alpha",
+ cb.getBase, cb.getProps, cb.getKind)
+ : new CommitContext(session, "Change contents of A/B/E/alpha"));
try {
cc.editor.alterFile("A/B/E/alpha", 1, hash, stream, null);
cc.editor.complete();
@@ -717,6 +832,18 @@ public class SVNRemoteTests extends SVNT
assertTrue(Arrays.equals(contents, checkcontents.toByteArray()));
}
+ public void testEditorSetFileContents() throws Exception
+ {
+ testEditorSetFileContents(null);
+ }
+
+ public void testEditorSetFileContents_WithCallbacks() throws Exception
+ {
+ testEditorSetFileContents(new EditorCallbacks(thisTest.getWCPath(), 1L,
+ new HashMap<String, byte[]>(),
+ NodeKind.file));
+ }
+
// Sanity check so that we don't forget about unimplemented methods.
public void testEditorNotImplemented() throws Exception
{
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Sun Dec 8 17:56:46 2013
@@ -927,7 +927,7 @@ class SVNTests extends TestCase
public Status[] getStatusArray()
{
- return (Status[]) statuses.toArray(new Status[statuses.size()]);
+ return statuses.toArray(new Status[statuses.size()]);
}
}
}
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java Sun Dec 8 17:56:46 2013
@@ -30,12 +30,16 @@ import org.apache.subversion.javahl.type
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.HashMap;
/**
* Tests the JavaHL SVNUtil APIs.
@@ -396,17 +400,191 @@ public class UtilTests extends SVNTests
public void testBuildKeywords() throws Throwable
{
- final byte[] kwval = "TEST=%H%_%b%_%u".getBytes();
+ final byte[] kwval = "Id TEST=%H%_%b%_%u".getBytes();
Map<String, byte[]> result;
result = SVNUtil.buildKeywords(kwval, Revision.SVN_INVALID_REVNUM,
null, null, null, null);
+ assertEquals(" ", new String(result.get("Id")));
assertEquals(" ", new String(result.get("TEST")));
- result = SVNUtil.buildKeywords(kwval, 48, "http://a/b/c",
+ result = SVNUtil.buildKeywords(kwval, 42, "http://a/b/c",
"http://a", new Date(1), "X");
- assertEquals("b/c 48 1970-01-01 00:00:00Z X c http://a/b/c",
+ assertEquals("c 42 1970-01-01 00:00:00Z X",
+ new String(result.get("Id")));
+ assertEquals("b/c 42 1970-01-01 00:00:00Z X c http://a/b/c",
new String(result.get("TEST")));
}
+
+ public void testTranslateStream() throws Throwable
+ {
+ final byte[] keywordsValue = "Id TEST=%H%_%b%_%u".getBytes();
+ final byte[] contentsContracted = "$Id$\n$TEST$\n".getBytes();
+ final byte[] contentsExpanded =
+ ("$Id: c 42 1970-01-01 00:00:00Z X $\r" +
+ "$TEST: b/c 42 1970-01-01 00:00:00Z X c http://a/b/c $\r"
+ ) .getBytes();
+ final Map<String, byte[]> keywords =
+ SVNUtil.buildKeywords(keywordsValue, 42, "http://a/b/c",
+ "http://a", new Date(1), "X");
+ final Map<String, byte[]> null_keywords = new HashMap<String, byte[]>();
+ byte[] buffer = new byte[1024];
+
+ for (Map.Entry<String, byte[]> e : keywords.entrySet())
+ null_keywords.put(e.getKey(), null);
+
+ // InputStream; expand
+ InputStream testin = null;
+ try {
+ testin = SVNUtil.translateStream(
+ new ByteArrayInputStream(contentsContracted),
+ SVNUtil.EOL_CR, true, keywords, true);
+ final int size = testin.read(buffer);
+ testin.close();
+ testin = null;
+
+ assertEquals("expand InputStream with concrete keywords",
+ new String(contentsExpanded),
+ new String(buffer, 0, size));
+ } finally {
+ if (testin != null) {
+ testin.close();
+ testin = null;
+ }
+ }
+
+ try {
+ testin = SVNUtil.translateStream(
+ new ByteArrayInputStream(contentsContracted),
+ SVNUtil.EOL_CR, true, true,
+ keywordsValue, 42, "http://a/b/c",
+ "http://a", new Date(1), "X");
+ final int size = testin.read(buffer);
+ testin.close();
+ testin = null;
+
+ assertEquals("expand InputStream with implied keywords",
+ new String(contentsExpanded),
+ new String(buffer, 0, size));
+ } finally {
+ if (testin != null) {
+ testin.close();
+ testin = null;
+ }
+ }
+
+ // InputStream; contract
+ try {
+ testin = SVNUtil.translateStream(
+ new ByteArrayInputStream(contentsExpanded),
+ SVNUtil.EOL_LF, true, null_keywords, false);
+ final int size = testin.read(buffer);
+ testin.close();
+ testin = null;
+
+ assertEquals("contract InputStream with concrete keywords",
+ new String(contentsContracted),
+ new String(buffer, 0, size));
+ } finally {
+ if (testin != null) {
+ testin.close();
+ testin = null;
+ }
+ }
+
+ try {
+ testin = SVNUtil.translateStream(
+ new ByteArrayInputStream(contentsExpanded),
+ SVNUtil.EOL_LF, true, false,
+ keywordsValue, 0, "", "", new Date(1), "");
+ final int size = testin.read(buffer);
+ testin.close();
+ testin = null;
+
+ assertEquals("contract InputStream with implied keywords",
+ new String(contentsContracted),
+ new String(buffer, 0, size));
+ } finally {
+ if (testin != null) {
+ testin.close();
+ testin = null;
+ }
+ }
+
+
+ // OutputStream; expand
+ OutputStream testout = null;
+ try {
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ testout = SVNUtil.translateStream(
+ result, SVNUtil.EOL_CR, true, keywords, true);
+ testout.write(contentsContracted);
+ testout.close();
+ testout = null;
+
+ assertEquals("expand OutputStream with concrete keywords",
+ new String(contentsExpanded), result.toString());
+ } finally {
+ if (testout != null) {
+ testout.close();
+ testout = null;
+ }
+ }
+
+ try {
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ testout = SVNUtil.translateStream(
+ result, SVNUtil.EOL_CR, true, true,
+ keywordsValue, 42, "http://a/b/c",
+ "http://a", new Date(1), "X");
+ testout.write(contentsContracted);
+ testout.close();
+ testout = null;
+
+ assertEquals("expand OutputStream with implied keywords",
+ new String(contentsExpanded), result.toString());
+ } finally {
+ if (testout != null) {
+ testout.close();
+ testout = null;
+ }
+ }
+
+ // OutputStream; contract
+ try {
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ testout = SVNUtil.translateStream(
+ result, SVNUtil.EOL_LF, true, null_keywords, false);
+ testout.write(contentsExpanded);
+ testout.close();
+ testout = null;
+
+ assertEquals("contract OutputStream with concrete keywords",
+ new String(contentsContracted), result.toString());
+ } finally {
+ if (testout != null) {
+ testout.close();
+ testout = null;
+ }
+ }
+
+ try {
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ testout = SVNUtil.translateStream(
+ result, SVNUtil.EOL_LF, true, false,
+ keywordsValue, 0, "", "", new Date(1), "");
+ testout.write(contentsExpanded);
+ testout.close();
+ testout = null;
+
+ assertEquals("contract OutputStream with implied keywords",
+ new String(contentsContracted), result.toString());
+ } finally {
+ if (testout != null) {
+ testout.close();
+ testout = null;
+ }
+ }
+ }
}
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java Sun Dec 8 17:56:46 2013
@@ -34,11 +34,12 @@ import java.util.Date;
import org.apache.subversion.javahl.types.*;
-import junit.framework.Assert;
+import junit.framework.TestCase;
+
/**
* This class describe the expected state of the working copy
*/
-public class WC
+public class WC extends TestCase
{
/**
* the map of the items of the working copy. The relative path is the key
@@ -169,9 +170,9 @@ public class WC
// since having no content signals a directory, changes of removing the
// content or setting a former not set content is not allowed. That
// would change the type of the item.
- Assert.assertNotNull("cannot unset content", content);
+ assertNotNull("cannot unset content", content);
Item i = items.get(path);
- Assert.assertNotNull("cannot set content on directory", i.myContent);
+ assertNotNull("cannot set content on directory", i.myContent);
i.myContent = content;
}
@@ -304,13 +305,13 @@ public class WC
*/
void check(DirEntry[] tested, String singleFilePath)
{
- Assert.assertEquals("not a single dir entry", 1, tested.length);
+ assertEquals("not a single dir entry", 1, tested.length);
Item item = items.get(singleFilePath);
- Assert.assertNotNull("not found in working copy", item);
- Assert.assertNotNull("not a file", item.myContent);
- Assert.assertEquals("state says file, working copy not",
- tested[0].getNodeKind(),
- item.nodeKind == null ? NodeKind.file : item.nodeKind);
+ assertNotNull("not found in working copy", item);
+ assertNotNull("not a file", item.myContent);
+ assertEquals("state says file, working copy not",
+ tested[0].getNodeKind(),
+ item.nodeKind == null ? NodeKind.file : item.nodeKind);
}
/**
@@ -342,19 +343,18 @@ public class WC
{
String name = basePath + entry.getPath();
Item item = items.get(name);
- Assert.assertNotNull("null paths won't be found in working copy",
- item);
+ assertNotNull("null paths won't be found in working copy", item);
if (item.myContent != null)
{
- Assert.assertEquals("Expected '" + entry + "' to be file",
- entry.getNodeKind(),
- item.nodeKind == null ? NodeKind.file : item.nodeKind);
+ assertEquals("Expected '" + entry + "' to be file",
+ entry.getNodeKind(),
+ item.nodeKind == null ? NodeKind.file : item.nodeKind);
}
else
{
- Assert.assertEquals("Expected '" + entry + "' to be dir",
- entry.getNodeKind(),
- item.nodeKind == null ? NodeKind.dir : item.nodeKind);
+ assertEquals("Expected '" + entry + "' to be dir",
+ entry.getNodeKind(),
+ item.nodeKind == null ? NodeKind.dir : item.nodeKind);
}
item.touched = true;
}
@@ -369,9 +369,9 @@ public class WC
!item.myPath.equals(basePath))
{
// Non-recursive checks will fail here.
- Assert.assertFalse("Expected path '" + item.myPath +
- "' not found in dir entries",
- recursive);
+ assertFalse("Expected path '" + item.myPath +
+ "' not found in dir entries",
+ recursive);
// Look deeper under the tree.
boolean found = false;
@@ -387,8 +387,8 @@ public class WC
}
}
}
- Assert.assertTrue("Expected path '" + item.myPath +
- "' not found in dir entries", found);
+ assertTrue("Expected path '" + item.myPath +
+ "' not found in dir entries", found);
}
}
}
@@ -436,14 +436,14 @@ public class WC
for (Status status : tested)
{
String path = status.getPath();
- Assert.assertTrue("status path starts not with working copy path",
- path.startsWith(normalizeWCPath));
+ assertTrue("status path starts not with working copy path",
+ path.startsWith(normalizeWCPath));
// we calculate the relative path to the working copy root
if (path.length() > workingCopyPath.length() + 1)
{
- Assert.assertEquals("missing '/' in status path",
- path.charAt(workingCopyPath.length()), '/');
+ assertEquals("missing '/' in status path",
+ path.charAt(workingCopyPath.length()), '/');
path = path.substring(workingCopyPath.length() + 1);
}
else
@@ -451,25 +451,23 @@ public class WC
path = "";
Item item = items.get(path);
- Assert.assertNotNull("status not found in working copy: " + path,
- item);
- Assert.assertEquals("wrong text status in working copy: " + path,
- item.textStatus, status.getTextStatus());
+ assertNotNull("status not found in working copy: " + path, item);
+ assertEquals("wrong text status in working copy: " + path,
+ item.textStatus, status.getTextStatus());
if (item.workingCopyRev != -1)
- Assert.assertEquals("wrong revision number in working copy: "
- + path,
- item.workingCopyRev, status.getRevisionNumber());
- Assert.assertEquals("lock status wrong: " + path,
- item.isLocked, status.isLocked());
- Assert.assertEquals("switch status wrong: " + path,
- item.isSwitched, status.isSwitched());
- Assert.assertEquals("wrong prop status in working copy: " + path,
- item.propStatus, status.getPropStatus());
+ assertEquals("wrong revision number in working copy: " + path,
+ item.workingCopyRev, status.getRevisionNumber());
+ assertEquals("lock status wrong: " + path,
+ item.isLocked, status.isLocked());
+ assertEquals("switch status wrong: " + path,
+ item.isSwitched, status.isSwitched());
+ assertEquals("wrong prop status in working copy: " + path,
+ item.propStatus, status.getPropStatus());
if (item.myContent != null)
{
- Assert.assertEquals("state says file, working copy not: " + path,
- status.getNodeKind(),
- item.nodeKind == null ? NodeKind.file : item.nodeKind);
+ assertEquals("state says file, working copy not: " + path,
+ status.getNodeKind(),
+ item.nodeKind == null ? NodeKind.file : item.nodeKind);
if (status.getTextStatus() == Status.Kind.normal ||
item.checkContent)
{
@@ -483,26 +481,26 @@ public class WC
buffer.append((char) ch);
}
rd.close();
- Assert.assertEquals("content mismatch: " + path,
- buffer.toString(), item.myContent);
+ assertEquals("content mismatch: " + path,
+ buffer.toString(), item.myContent);
}
}
else
{
- Assert.assertEquals("state says dir, working copy not: " + path,
- status.getNodeKind(),
- item.nodeKind == null ? NodeKind.dir : item.nodeKind);
+ assertEquals("state says dir, working copy not: " + path,
+ status.getNodeKind(),
+ item.nodeKind == null ? NodeKind.dir : item.nodeKind);
}
if (checkRepos)
{
- Assert.assertEquals("Last commit revisions for OOD path '"
- + item.myPath + "' don't match:",
- item.reposLastCmtRevision,
- status.getReposLastCmtRevisionNumber());
- Assert.assertEquals("Last commit kinds for OOD path '"
- + item.myPath + "' don't match:",
- item.reposKind, status.getReposKind());
+ assertEquals("Last commit revisions for OOD path '"
+ + item.myPath + "' don't match:",
+ item.reposLastCmtRevision,
+ status.getReposLastCmtRevisionNumber());
+ assertEquals("Last commit kinds for OOD path '"
+ + item.myPath + "' don't match:",
+ item.reposKind, status.getReposKind());
// Only the last committed rev and kind is available for
// paths deleted in the repos.
@@ -511,17 +509,17 @@ public class WC
long lastCmtTime =
(status.getReposLastCmtDate() == null ?
0 : status.getReposLastCmtDate().getTime());
- Assert.assertEquals("Last commit dates for OOD path '" +
- item.myPath + "' don't match:",
- new Date(item.reposLastCmtDate),
- new Date(lastCmtTime));
- Assert.assertEquals("Last commit authors for OOD path '"
- + item.myPath + "' don't match:",
- item.reposLastCmtAuthor,
- status.getReposLastCmtAuthor());
- Assert.assertNotNull("URL for path " + item.myPath
- + " should not be null",
- status.getUrl());
+ assertEquals("Last commit dates for OOD path '" +
+ item.myPath + "' don't match:",
+ new Date(item.reposLastCmtDate),
+ new Date(lastCmtTime));
+ assertEquals("Last commit authors for OOD path '"
+ + item.myPath + "' don't match:",
+ item.reposLastCmtAuthor,
+ status.getReposLastCmtAuthor());
+ assertNotNull("URL for path " + item.myPath
+ + " should not be null",
+ status.getUrl());
}
}
item.touched = true;
@@ -531,9 +529,9 @@ public class WC
// result array
for (Item item : items.values())
{
- Assert.assertTrue("item '" + item.myPath +
- "' in working copy not found in status",
- item.touched);
+ assertTrue("item '" + item.myPath +
+ "' in working copy not found in status",
+ item.touched);
}
}
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java Sun Dec 8 17:56:46 2013
@@ -3360,9 +3360,12 @@ public class BasicTests extends SVNTests
private class MyChangelistCallback extends HashMap
implements ChangelistCallback
{
+ private static final long serialVersionUID = 1L;
+
@SuppressWarnings("unchecked")
public void doChangelist(String path, String changelist)
{
+ path = fileToSVNPath(new File(path), true);
if (super.containsKey(path))
{
// Append the changelist to the existing list
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/core.i
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/core.i?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/core.i (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/core.i Sun Dec 8 17:56:46 2013
@@ -820,7 +820,6 @@ core_set_current_pool (apr_pool_t *pool)
-#ifdef SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC
%inline %{
/* Helper function to set the gnome-keyring unlock prompt function. This
* C function accepts an auth baton, a function and a prompt baton, but
@@ -844,7 +843,6 @@ static void svn_auth_set_gnome_keyring_u
prompt_baton);
}
%}
-#endif
#if defined(SWIGPERL) || defined(SWIGRUBY)
%include svn_md5_h.swg
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/include/svn_containers.swg?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/include/svn_containers.swg Sun Dec 8 17:56:46 2013
@@ -954,3 +954,16 @@
%append_output(svn_swig_rb_apr_array_to_array_auth_provider_object(*$1));
}
#endif
+
+/* -----------------------------------------------------------------------
+ Output of apr_array_header_t * <svn_diff_hunk_t *>
+*/
+#ifdef SWIGPYTHON
+%typemap(out) apr_array_header_t *hunks {
+ %append_output(svn_swig_py_pointerlist_to_list($1, $descriptor(svn_diff_hunk_t *),
+ _global_py_pool));
+ if (PyErr_Occurred()) {
+ SWIG_fail;
+ }
+}
+#endif
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Sun Dec 8 17:56:46 2013
@@ -25,6 +25,9 @@
#include <apr_general.h>
#include <apr_portable.h>
+/* Windows hack: Allow overriding some <perl.h> defaults */
+#include "swigutil_pl__pre_perl.h"
+
#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h Sun Dec 8 17:56:46 2013
@@ -30,8 +30,6 @@
*/
#include <ruby/config.h>
-#ifdef _MSC_VER
-#endif
#undef NORETURN
#undef DEPRECATED
@@ -87,6 +85,10 @@ typedef unsigned __int64 uint64_t;
#undef HAVE_INTTYPES_H
#endif
+#ifdef _MSC_VER
+#pragma warning(disable: 4702) /* warning C4702: unreachable code */
+#endif
+
#endif /* defined(SVN_SWIG_RUBY__CUSTOM_RUBY_CONFIG) && defined(_MSC_VER) */
#endif /* SVN_SWIG_SWIGUTIL_RB__PRE_RUBY_H */
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_fs_util.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_fs_util.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_fs_util.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_fs_util.h Sun Dec 8 17:56:46 2013
@@ -210,6 +210,17 @@ svn_fs__append_to_merged_froms(svn_merge
const char *rel_path,
apr_pool_t *pool);
+/* Given the FS creation options in CONFIG, return the oldest version that
+ we shall be compatible with in *COMPATIBLE_VERSION. The patch level
+ is always set to 0 and the tag to "". Allocate the result in POOL.
+
+ Note that the result will always be compatible to the current tool
+ version, i.e. will be a version number not more recent than this tool. */
+svn_error_t *
+svn_fs__compatible_version(svn_version_t **compatible_version,
+ apr_hash_t *config,
+ apr_pool_t *pool);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_io_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_io_private.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_io_private.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_io_private.h Sun Dec 8 17:56:46 2013
@@ -44,6 +44,15 @@ extern "C" {
#define SVN__APR_FINFO_MASK_OUT (0)
#endif
+/* 90% of the lines we encounter will be less than this many chars.
+ *
+ * Line-based functions like svn_stream_readline should fetch data in
+ * blocks no longer than this. Although using a larger prefetch size is
+ * not illegal and must not break any functionality, it may be
+ * significantly less efficient in certain situations.
+ */
+#define SVN__LINE_CHUNK_SIZE 80
+
/** Set @a *executable TRUE if @a file_info is executable for the
* user, FALSE otherwise.
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_ra_svn_private.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_ra_svn_private.h Sun Dec 8 17:56:46 2013
@@ -43,6 +43,12 @@ svn_ra_svn__set_shim_callbacks(svn_ra_sv
svn_delta_shim_callbacks_t *shim_callbacks);
/**
+ * Return the memory pool used to allocate @a conn.
+ */
+apr_pool_t *
+svn_ra_svn__get_pool(svn_ra_svn_conn_t *conn);
+
+/**
* @defgroup ra_svn_deprecated ra_svn low-level functions
* @{
*/
@@ -250,6 +256,33 @@ svn_ra_svn__read_cmd_response(svn_ra_svn
apr_pool_t *pool,
const char *fmt, ...);
+/** Check the receive buffer and socket of @a conn whether there is some
+ * unprocessed incomming data without waiting for new data to come in.
+ * If data is found, set @a *has_command to TRUE. If the connection does
+ * not contain any more data and has been closed, set @a *terminated to
+ * TRUE.
+ */
+svn_error_t *
+svn_ra_svn__has_command(svn_boolean_t *has_command,
+ svn_boolean_t *terminated,
+ svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool);
+
+/** Accept a single command from @a conn and handle them according
+ * to @a cmd_hash. Command handlers will be passed @a conn, @a pool,
+ * the parameters of the command, and @a baton. @a *terminate will be
+ * set if either @a error_on_disconnect is FALSE and the connection got
+ * closed, or if the command being handled has the "terminate" flag set
+ * in the command table.
+ */
+svn_error_t *
+svn_ra_svn__handle_command(svn_boolean_t *terminate,
+ apr_hash_t *cmd_hash,
+ void *baton,
+ svn_ra_svn_conn_t *conn,
+ svn_boolean_t error_on_disconnect,
+ apr_pool_t *pool);
+
/** Accept commands over the network and handle them according to @a
* commands. Command handlers will be passed @a conn, a subpool of @a
* pool (cleared after each command is handled), the parameters of the
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_sqlite.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_sqlite.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_sqlite.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_sqlite.h Sun Dec 8 17:56:46 2013
@@ -487,6 +487,32 @@ svn_sqlite__with_immediate_transaction(s
SVN_ERR(svn_sqlite__finish_savepoint(svn_sqlite__db, svn_sqlite__err)); \
} while (0)
+/* Evaluate the expression EXPR1..EXPR4 within a 'savepoint'. Savepoints can
+ * be nested.
+ *
+ * Begin a savepoint in DB; evaluate the expression EXPR1, which would
+ * typically be a function call that does some work in DB; if no error occurred,
+ * run EXPR2; if no error occurred EXPR3; ... and finally release
+ * the savepoint if EXPR evaluated to SVN_NO_ERROR, otherwise roll back
+ * to the savepoint and then release it.
+ */
+#define SVN_SQLITE__WITH_LOCK4(expr1, expr2, expr3, expr4, db) \
+ do { \
+ svn_sqlite__db_t *svn_sqlite__db = (db); \
+ svn_error_t *svn_sqlite__err; \
+ \
+ SVN_ERR(svn_sqlite__begin_savepoint(svn_sqlite__db)); \
+ svn_sqlite__err = (expr1); \
+ if (!svn_sqlite__err) \
+ svn_sqlite__err = (expr2); \
+ if (!svn_sqlite__err) \
+ svn_sqlite__err = (expr3); \
+ if (!svn_sqlite__err) \
+ svn_sqlite__err = (expr4); \
+ SVN_ERR(svn_sqlite__finish_savepoint(svn_sqlite__db, svn_sqlite__err)); \
+ } while (0)
+
+
/* Helper function to handle several SQLite operations inside a shared lock.
This callback is similar to svn_sqlite__with_transaction(), but can be
nested (even with a transaction).
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_subr_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_subr_private.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_subr_private.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_subr_private.h Sun Dec 8 17:56:46 2013
@@ -221,6 +221,13 @@ svn_stream__from_spillbuf(svn_spillbuf_t
/** @} */
+/*----------------------------------------------------*/
+
+/**
+ * @defgroup svn_checksum_private Checksumming helper APIs
+ * @{
+ */
+
/**
* Internal function for creating a MD5 checksum from a binary digest.
*
@@ -240,6 +247,51 @@ svn_checksum_t *
svn_checksum__from_digest_sha1(const unsigned char *digest,
apr_pool_t *result_pool);
+/**
+ * Internal function for creating a 32 bit FNV-1a checksum from a binary
+ * digest.
+ *
+ * @since New in 1.9
+ */
+svn_checksum_t *
+svn_checksum__from_digest_fnv1a_32(const unsigned char *digest,
+ apr_pool_t *result_pool);
+
+/**
+ * Internal function for creating a modified 32 bit FNV-1a checksum from
+ * a binary digest.
+ *
+ * @since New in 1.9
+ */
+svn_checksum_t *
+svn_checksum__from_digest_fnv1a_32x4(const unsigned char *digest,
+ apr_pool_t *result_pool);
+
+
+/**
+ * Return a 32 bit FNV-1a checksum for the first @a len bytes in @a input.
+ * The representation is in Big Endian.
+ *
+ * @since New in 1.9
+ */
+apr_uint32_t
+svn__fnv1a_32(const void *input, apr_size_t len);
+
+/**
+ * Return a 32 bit modified FNV-1a checksum for the first @a len bytes in
+ * @a input. The representation is in Big Endian.
+ *
+ * @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.
+ *
+ * @since New in 1.9
+ */
+apr_uint32_t
+svn__fnv1a_32x4(const void *input, apr_size_t len);
+
+/** @} */
+
/**
* @defgroup svn_hash_support Hash table serialization support
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_utf_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_utf_private.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_utf_private.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/private/svn_utf_private.h Sun Dec 8 17:56:46 2013
@@ -134,6 +134,22 @@ svn_utf__normcmp(int *result,
const char *str2, apr_size_t len2,
svn_membuf_t *buf1, svn_membuf_t *buf2);
+/* Normalize the UTF-8 string STR to form C, using BUF for temporary
+ * storage. If LEN is SVN_UTF__UNKNOWN_LENGTH, assume STR is
+ * null-terminated; otherwise, consider the string only up to the
+ * given length.
+ *
+ * Return the normalized string in *RESULT, which shares storage with
+ * BUF and is valid only until the next time BUF is modified.
+ *
+ * A returned error may indicate that STRING contains invalid UTF-8 or
+ * invalid Unicode codepoints.
+ */
+svn_error_t*
+svn_utf__normalize(const char **result,
+ const char *str, apr_size_t len,
+ svn_membuf_t *buf);
+
/* Check if STRING is a valid, NFC-normalized UTF-8 string. Note that
* a FALSE return value may indicate that STRING is not valid UTF-8 at
* all.
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_auth.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_auth.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_auth.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_auth.h Sun Dec 8 17:56:46 2013
@@ -884,7 +884,11 @@ 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
+ * svn_auth_get_platform_specific_provider with provider_name of "windows"
+ * and provider_type of "simple".
*/
+SVN_DEPRECATED
void
svn_auth_get_windows_simple_provider(svn_auth_provider_object_t **provider,
apr_pool_t *pool);
@@ -906,7 +910,11 @@ svn_auth_get_windows_simple_provider(svn
* @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 svn_auth_get_platform_specific_provider with provider_name
+ * of "windows" and provider_type of "ssl_client_cert_pw".
*/
+SVN_DEPRECATED
void
svn_auth_get_windows_ssl_client_cert_pw_provider(
svn_auth_provider_object_t **provider,
@@ -923,7 +931,11 @@ svn_auth_get_windows_ssl_client_cert_pw_
*
* @since New in 1.5.
* @note This function is only available on Windows.
+ * @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 "ssl_server_trust".
*/
+SVN_DEPRECATED
void
svn_auth_get_windows_ssl_server_trust_provider(
svn_auth_provider_object_t **provider,
@@ -943,7 +955,11 @@ svn_auth_get_windows_ssl_server_trust_pr
*
* @since New in 1.4
* @note This function is only available on Mac OS 10.2 and higher.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "keychain" and provider_type of "simple".
*/
+SVN_DEPRECATED
void
svn_auth_get_keychain_simple_provider(svn_auth_provider_object_t **provider,
apr_pool_t *pool);
@@ -959,14 +975,21 @@ svn_auth_get_keychain_simple_provider(sv
*
* @since New in 1.6
* @note This function is only available on Mac OS 10.2 and higher.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "keychain" and provider_type of "ssl_client_cert_pw".
*/
+SVN_DEPRECATED
void
svn_auth_get_keychain_ssl_client_cert_pw_provider(
svn_auth_provider_object_t **provider,
apr_pool_t *pool);
#endif /* DARWIN || DOXYGEN */
-#if (!defined(DARWIN) && !defined(WIN32)) || defined(DOXYGEN)
+/* Note that the gnome keyring unlock prompt related items below must be
+ * declared for all platforms in order to allow SWIG interfaces to be
+ * used regardless of the platform. */
+
/** A type of callback function for obtaining the GNOME Keyring password.
*
* In this callback, the client should ask the user for default keyring
@@ -996,7 +1019,7 @@ typedef svn_error_t *(*svn_auth_gnome_ke
* @c *SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC. */
#define SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_BATON "gnome-keyring-unlock-prompt-baton"
-
+#if (!defined(DARWIN) && !defined(WIN32)) || defined(DOXYGEN)
/**
* Get libsvn_auth_gnome_keyring version information.
*
@@ -1026,7 +1049,11 @@ svn_auth_gnome_keyring_version(void);
* @since New in 1.6
* @note This function actually works only on systems with
* libsvn_auth_gnome_keyring and GNOME Keyring installed.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "gnome_keyring" and provider_type of "simple".
*/
+SVN_DEPRECATED
void
svn_auth_get_gnome_keyring_simple_provider(
svn_auth_provider_object_t **provider,
@@ -1053,7 +1080,11 @@ svn_auth_get_gnome_keyring_simple_provid
* @since New in 1.6
* @note This function actually works only on systems with
* libsvn_auth_gnome_keyring and GNOME Keyring installed.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "gnome_keyring" and provider_type of "ssl_client_cert_pw".
*/
+SVN_DEPRECATED
void
svn_auth_get_gnome_keyring_ssl_client_cert_pw_provider(
svn_auth_provider_object_t **provider,
@@ -1081,7 +1112,11 @@ svn_auth_kwallet_version(void);
* @since New in 1.6
* @note This function actually works only on systems with libsvn_auth_kwallet
* and KWallet installed.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "kwallet" and provider_type of "simple".
*/
+SVN_DEPRECATED
void
svn_auth_get_kwallet_simple_provider(svn_auth_provider_object_t **provider,
apr_pool_t *pool);
@@ -1099,7 +1134,11 @@ svn_auth_get_kwallet_simple_provider(svn
* @since New in 1.6
* @note This function actually works only on systems with libsvn_auth_kwallet
* and KWallet installed.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "kwallet" and provider_type of "ssl_client_cert_pw".
*/
+SVN_DEPRECATED
void
svn_auth_get_kwallet_ssl_client_cert_pw_provider(
svn_auth_provider_object_t **provider,
@@ -1121,7 +1160,11 @@ svn_auth_get_kwallet_ssl_client_cert_pw_
* @since New in 1.8
* @note This function actually works only on systems with
* GNU Privacy Guard installed.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ * Use svn_auth_get_platform_specific_provider with provider_name
+ * of "gpg_agent" and provider_type of "simple".
*/
+SVN_DEPRECATED
void
svn_auth_get_gpg_agent_simple_provider
(svn_auth_provider_object_t **provider,
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_cache_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_cache_config.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_cache_config.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_cache_config.h Sun Dec 8 17:56:46 2013
@@ -41,6 +41,9 @@ extern "C" {
/** Cache resource settings. It controls what caches, in what size and
how they will be created. The settings apply for the whole process.
+ @note Do not extend this data structure as this would break binary
+ compatibility.
+
@since New in 1.7.
*/
typedef struct svn_cache_config_t
@@ -56,6 +59,8 @@ typedef struct svn_cache_config_t
/** is this application guaranteed to be single-threaded? */
svn_boolean_t single_threaded;
+
+ /* DON'T add new members here. Bump struct and API version instead. */
} svn_cache_config_t;
/** Get the current cache configuration. If it has not been set,
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_checksum.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_checksum.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_checksum.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_checksum.h Sun Dec 8 17:56:46 2013
@@ -48,7 +48,17 @@ typedef enum svn_checksum_kind_t
svn_checksum_md5,
/** The checksum is (or should be set to) a SHA1 checksum. */
- svn_checksum_sha1
+ svn_checksum_sha1,
+
+ /** The checksum is (or should be set to) a FNV-1a 32 bit checksum,
+ * in big endian byte order.
+ * @since New in 1.9. */
+ svn_checksum_fnv1a_32,
+
+ /** The checksum is (or should be set to) a modified FNV-1a 32 bit,
+ * in big endian byte order.
+ * @since New in 1.9. */
+ svn_checksum_fnv1a_32x4
} svn_checksum_kind_t;
/**
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_client.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_client.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_client.h Sun Dec 8 17:56:46 2013
@@ -4060,8 +4060,15 @@ svn_client_mergeinfo_get_merged(apr_hash
* If a depth other than #svn_depth_empty or #svn_depth_infinity is
* requested then return a #SVN_ERR_UNSUPPORTED_FEATURE error.
*
- * @a discover_changed_paths and @a revprops are the same as for
- * svn_client_log5(). Use @a scratch_pool for all temporary allocations.
+ * In addition to the behavior of @a discover_changed_paths described in
+ * svn_client_log5(), if set to TRUE it enables detection of sub-tree
+ * merges that are complete but can't be detected as complete without
+ * access to the changed paths. Sub-tree merges detected as complete will
+ * be included if @a finding_merged is TRUE or filtered if @a finding_merged
+ * is FALSE.
+ *
+ * @a revprops is the same as for svn_client_log5(). Use @a scratch_pool for
+ * all temporary allocations.
*
* @a ctx is a context used for authentication.
*
@@ -4158,11 +4165,11 @@ svn_client_mergeinfo_log_eligible(const
* @{
*/
-/** Recursively cleanup a working copy directory @a dir, finishing any
- * incomplete operations, removing lockfiles, etc.
+/** Recursively vacuum a working copy directory @a dir, removing unnecessary
+ * data.
*
- * If @a include_externals is @c TRUE, recurse into externals and clean
- * them up as well.
+ * If @a include_externals is @c TRUE, recurse into externals and vacuum them
+ * as well.
*
* If @a remove_unversioned_items is @c TRUE, remove unversioned items
* in @a dir after successfull working copy cleanup.
@@ -4170,10 +4177,36 @@ svn_client_mergeinfo_log_eligible(const
* in @a dir after successfull working copy cleanup.
*
* When asked to remove unversioned or ignored items, and the working copy
- * is already locked via a different client or WC context than @a ctx, return
- * #SVN_ERR_WC_LOCKED. This prevents accidental working copy corruption in
- * case users run the cleanup operation to remove unversioned items while
- * another client is performing some other operation on the working copy.
+ * is already locked, return #SVN_ERR_WC_LOCKED. This prevents accidental
+ * working copy corruption in case users run the cleanup operation to
+ * remove unversioned items while another client is performing some other
+ * operation on the working copy.
+ *
+ * If @a ctx->cancel_func is non-NULL, invoke it with @a
+ * ctx->cancel_baton at various points during the operation. If it
+ * returns an error (typically #SVN_ERR_CANCELLED), return that error
+ * immediately.
+ *
+ * Use @a scratch_pool for any temporary allocations.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_client_vacuum(const char *dir_abspath,
+ svn_boolean_t remove_unversioned_items,
+ svn_boolean_t remove_ignored_items,
+ svn_boolean_t fix_recorded_timestamps,
+ svn_boolean_t vacuum_pristines,
+ svn_boolean_t include_externals,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool);
+
+
+/** Recursively cleanup a working copy directory @a dir, finishing any
+ * incomplete operations, removing lockfiles, etc.
+ *
+ * If @a include_externals is @c TRUE, recurse into externals and clean
+ * them up as well.
*
* If @a ctx->cancel_func is non-NULL, invoke it with @a
* ctx->cancel_baton at various points during the operation. If it
@@ -4185,15 +4218,17 @@ svn_client_mergeinfo_log_eligible(const
* @since New in 1.9.
*/
svn_error_t *
-svn_client_cleanup2(const char *dir,
+svn_client_cleanup2(const char *dir_abspath,
+ svn_boolean_t break_locks,
+ svn_boolean_t fix_recorded_timestamps,
+ svn_boolean_t clear_dav_cache,
+ svn_boolean_t vacuum_pristines,
svn_boolean_t include_externals,
- svn_boolean_t remove_unversioned_items,
- svn_boolean_t remove_ignored_items,
svn_client_ctx_t *ctx,
apr_pool_t *scratch_pool);
-/* Like svn_client_cleanup2(), but no support for removing unversioned items
- * and cleaning up externals.
+/* Like svn_client_cleanup2(), but no support for not breaking locks and
+ * cleaning up externals and using a potentially non absolute path.
*
* @deprecated Provided for limited backwards compatibility with the 1.8 API.
*/
@@ -5786,10 +5821,12 @@ svn_client_ls(apr_hash_t **dirents,
/**
* Output the content of a file.
*
- * @param[in] out The stream to which the content will be written.
- * @param[in] path_or_url The path or URL of the file.
- * @param[in] peg_revision The peg revision.
- * @param[in] revision The operative revision.
+ * @param[out] props Optional output argument to obtain properties.
+ * @param[in] out The stream to which the content will be written.
+ * @param[in] path_or_url The path or URL of the file.
+ * @param[in] peg_revision The peg revision.
+ * @param[in] revision The operative revision.
+ * @param[in] expand_keywords When true, keywords (when set) are expanded.
* @param[in] ctx The standard client context, used for possible
* authentication.
* @param[in] pool Used for any temporary allocation.
@@ -5804,12 +5841,30 @@ svn_client_ls(apr_hash_t **dirents,
* determined. <br>
* If no error occurred, return #SVN_NO_ERROR.
*
- * @since New in 1.2.
- *
* @see #svn_client_ctx_t <br> @ref clnt_revisions for
* a discussion of operative and peg revisions.
+ *
+ * @since New in 1.9.
*/
svn_error_t *
+svn_client_cat3(apr_hash_t **props,
+ svn_stream_t *out,
+ const char *path_or_url,
+ const svn_opt_revision_t *peg_revision,
+ const svn_opt_revision_t *revision,
+ svn_boolean_t expand_keywords,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_client_cat3() except without the option of directly
+ * reading the properties, and with @a expand_keywords always TRUE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.8 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
svn_client_cat2(svn_stream_t *out,
const char *path_or_url,
const svn_opt_revision_t *peg_revision,
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_config.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_config.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_config.h Sun Dec 8 17:56:46 2013
@@ -106,8 +106,11 @@ typedef struct svn_config_t svn_config_t
#define SVN_CONFIG_CATEGORY_CONFIG "config"
#define SVN_CONFIG_SECTION_AUTH "auth"
+/** @since New in 1.6. */
#define SVN_CONFIG_OPTION_PASSWORD_STORES "password-stores"
+/** @since New in 1.6. */
#define SVN_CONFIG_OPTION_KWALLET_WALLET "kwallet-wallet"
+/** @since New in 1.6. */
#define SVN_CONFIG_OPTION_KWALLET_SVN_APPLICATION_NAME_WITH_PID "kwallet-svn-application-name-with-pid"
/** @since New in 1.8. */
#define SVN_CONFIG_OPTION_SSL_CLIENT_CERT_FILE_PROMPT "ssl-client-cert-file-prompt"
@@ -133,7 +136,9 @@ typedef struct svn_config_t svn_config_t
#define SVN_CONFIG_OPTION_NO_UNLOCK "no-unlock"
#define SVN_CONFIG_OPTION_MIMETYPES_FILE "mime-types-file"
#define SVN_CONFIG_OPTION_PRESERVED_CF_EXTS "preserved-conflict-file-exts"
+/** @since New in 1.7. */
#define SVN_CONFIG_OPTION_INTERACTIVE_CONFLICTS "interactive-conflicts"
+/** @since New in 1.7. */
#define SVN_CONFIG_OPTION_MEMORY_CACHE_SIZE "memory-cache-size"
/** @since New in 1.9. */
#define SVN_CONFIG_OPTION_DIFF_IGNORE_CONTENT_TYPE "diff-ignore-content-type"
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_diff.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_diff.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_diff.h Sun Dec 8 17:56:46 2013
@@ -911,8 +911,8 @@ 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 first line returned is the hunk header.
- * Any subsequent lines are unidiff data (starting with '+', '-', or ' ').
+ * of the diff text of @a hunk. The hunk header is not returned only the
+ * 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.
@@ -922,6 +922,13 @@ typedef struct svn_diff_hunk_t svn_diff_
* hunk does not end with a newline character and @a eol is not NULL.
* Temporary allocations will be performed in @a scratch_pool.
*
+ * @note The hunk header information can be retrievied with the following
+ * functions:
+ * @see svn_diff_hunk_get_original_start()
+ * @see svn_diff_hunk_get_original_length()
+ * @see svn_diff_hunk_get_modified_start()
+ * @see svn_diff_hunk_get_modified_length()
+ *
* @since New in 1.7.
*/
svn_error_t *
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_dirent_uri.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_dirent_uri.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_dirent_uri.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_dirent_uri.h Sun Dec 8 17:56:46 2013
@@ -218,7 +218,7 @@ svn_dirent_join(const char *base,
char *
svn_dirent_join_many(apr_pool_t *result_pool,
const char *base,
- ...);
+ ...) SVN_NEEDS_SENTINEL_NULL;
/** Join a base relpath (@a base) with a component (@a component).
* @a component need not be a single component.
@@ -354,6 +354,19 @@ char *
svn_relpath_dirname(const char *relpath,
apr_pool_t *result_pool);
+/** Return a maximum of @a max_components components of @a relpath. This is
+ * an efficient way of calling svn_relpath_dirname() multiple times until only
+ * a specific number of components is left.
+ *
+ * Allocate the result in @a result_pool (or statically in case of 0)
+ *
+ * @since New in 1.9.
+ */
+const char *
+svn_relpath_limit(const char *relpath,
+ int max_components,
+ apr_pool_t *result_pool);
+
/** Divide the canonicalized @a uri into a uri @a *dirpath and a
* (URI-decoded) relpath @a *base_name.
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_error.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_error.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_error.h Sun Dec 8 17:56:46 2013
@@ -268,6 +268,10 @@ svn_error__locate(const char *file,
* what code that used to call svn_handle_error() and now calls
* svn_handle_error2() does.
*
+ * Note that this should only be used from commandline specific code, or
+ * code that knows that @a stream is really where the application wants
+ * to receive its errors on.
+ *
* @since New in 1.2.
*/
void
@@ -387,10 +391,17 @@ svn_error_t *svn_error_purge_tracing(svn
} while (0)
-/** A statement macro, similar to @c SVN_ERR, but returns an integer.
+/** A statement macro intended for the main() function of the 'svn' program.
+ *
+ * Evaluate @a expr. If it yields an error, display the error on stdout
+ * and return @c EXIT_FAILURE.
+ *
+ * @note Not for use in the library, as it prints to stderr. This macro
+ * no longer suits the needs of the 'svn' program, and is not generally
+ * suitable for third-party use as it assumes the program name is 'svn'.
*
- * Evaluate @a expr. If it yields an error, handle that error and
- * return @c EXIT_FAILURE.
+ * @deprecated Provided for backward compatibility with the 1.8 API. Consider
+ * using svn_handle_error2() or svn_cmdline_handle_exit_error() instead.
*/
#define SVN_INT_ERR(expr) \
do { \
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_fs.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_fs.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_fs.h Sun Dec 8 17:56:46 2013
@@ -908,10 +908,9 @@ svn_fs_unparse_id(const svn_fs_id_t *id,
* pairs. When you commit a transaction, all of its properties become
* unversioned revision properties of the new revision. (There is one
* exception: the svn:date property will be automatically set on new
- * transactions to the date that the transaction was created, and will
+ * transactions to the date that the transaction was created, and can
* be overwritten when the transaction is committed by the current
- * time; changes to a transaction's svn:date property will not affect
- * its committed value.)
+ * time; see svn_fs_commit_txn2.)
*
* Transaction names are guaranteed to contain only letters (upper-
* and lower-case), digits, `-', and `.', from the ASCII character
@@ -1006,6 +1005,16 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p,
* a new filesystem revision containing the changes made in @a txn,
* storing that new revision number in @a *new_rev, and return zero.
*
+ * If @a set_timestamp is FALSE any svn:date on the transaction will
+ * be become the unversioned property svn:date on the revision.
+ * svn:date can have any value, it does not have to be a timestamp.
+ * If the transaction has no svn:date the revision will have no
+ * svn:date.
+ *
+ * If @a set_timestamp is TRUE the 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
@@ -1056,7 +1065,10 @@ svn_fs_commit_txn2(const char **conflict
/*
* Same as svn_fs_commit_txn2(), but with @a set_timestamp
* always set to @c TRUE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.8 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_fs_commit_txn(const char **conflict_p,
svn_revnum_t *new_rev,
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_path.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_path.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_path.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_path.h Sun Dec 8 17:56:46 2013
@@ -131,7 +131,9 @@ svn_path_join(const char *base, const ch
*/
SVN_DEPRECATED
char *
-svn_path_join_many(apr_pool_t *pool, const char *base, ...);
+svn_path_join_many(apr_pool_t *pool,
+ const char *base,
+ ...) SVN_NEEDS_SENTINEL_NULL;
/** Get the basename of the specified canonicalized @a path. The
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_repos.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_repos.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_repos.h Sun Dec 8 17:56:46 2013
@@ -284,8 +284,43 @@ typedef enum svn_repos_notify_warning_t
* @see svn_fs.h:"Directory entry names and directory paths" */
/* ### TODO(doxygen): make that a proper doxygen link */
/* See svn_fs__path_valid(). */
- svn_repos_notify_warning_invalid_fspath
+ svn_repos_notify_warning_invalid_fspath,
+ /**
+ * Found a denormalized name. Reported when the name of a directoy
+ * entry is not normalized to Unicode Normalization Form C.
+ *
+ * @since New in 1.9.
+ */
+ svn_repos_notify_warning_denormalized_name,
+
+ /**
+ * Detected a name collision. Reported when the names of two or more
+ * entries in the same directory differ only in character
+ * representation (normalization), but are otherwise identical.
+ *
+ * @since New in 1.9.
+ */
+ svn_repos_notify_warning_name_collision,
+
+ /**
+ * Found a denormalized mergeinfo entry. Reported when the path in
+ * an entry in the svn:mergeinfo property is not normalized to
+ * Unicode Normalization Form C.
+ *
+ * @since New in 1.9.
+ */
+ svn_repos_notify_warning_denormalized_mergeinfo,
+
+ /**
+ * Detected a mergeinfo path collision. Reported when the paths in
+ * two or more entries in the same svn:mergeinfo property differ
+ * only in character representation (normalization), but are
+ * otherwise identical.
+ *
+ * @since New in 1.9.
+ */
+ svn_repos_notify_warning_mergeinfo_collision
} svn_repos_notify_warning_t;
/**
@@ -2659,6 +2694,12 @@ svn_repos_info_format(int *repos_format,
* not notified. Finally, return an error if there were any failures during
* verification, or SVN_NO_ERROR if there were no failures.
*
+ * If @a check_normalization is @c TRUE, verify that all path names in
+ * the repository and in @c svn:mergeinfo entries are normaized to
+ * Unicode Normalization Form C, and report any name collisions within
+ * the same directory or svn:mergeinfo property where the names differ
+ * only in character representation, but are otherwise identical.
+ *
* @since New in 1.9.
*/
svn_error_t *
@@ -2666,6 +2707,7 @@ svn_repos_verify_fs3(svn_repos_t *repos,
svn_revnum_t start_rev,
svn_revnum_t end_rev,
svn_boolean_t keep_going,
+ svn_boolean_t check_normalization,
svn_repos_notify_func_t notify_func,
void *notify_baton,
svn_cancel_func_t cancel,
@@ -2673,7 +2715,8 @@ svn_repos_verify_fs3(svn_repos_t *repos,
apr_pool_t *scratch_pool);
/**
- * Like svn_repos_verify_fs3(), but with @a keep_going set to @c FALSE.
+ * Like svn_repos_verify_fs3(), but with @a keep_going and
+ * @a check_normalization set to @c FALSE.
*
* @since New in 1.7.
* @deprecated Provided for backward compatibility with the 1.8 API.
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_types.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_types.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_types.h Sun Dec 8 17:56:46 2013
@@ -89,6 +89,24 @@ extern "C" {
# endif
#endif
+/** Macro used to mark functions that require a final null sentinel argument.
+ *
+ * @since New in 1.9.
+ */
+#ifndef SVN_NEEDS_SENTINEL_NULL
+# if defined(__has_attribute)
+# if __has_attribute(__sentinel__)
+# define SVN_NEEDS_SENTINEL_NULL __attribute__((sentinel))
+# else
+# define SVN_NEEDS_SENTINEL_NULL
+# endif
+# elif defined(__GNUC__) && (__GNUC__ >= 4)
+# define SVN_NEEDS_SENTINEL_NULL __attribute__((sentinel))
+# else
+# define SVN_NEEDS_SENTINEL_NULL
+# endif
+#endif
+
/** Indicate whether the current platform supports unaligned data access.
*
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_wc.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_wc.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_wc.h Sun Dec 8 17:56:46 2013
@@ -7324,19 +7324,45 @@ svn_wc_get_pristine_copy_path(const char
/**
- * Recurse from @a local_abspath, cleaning up unfinished log business. Perform
- * any temporary allocations in @a scratch_pool. Any working copy locks under
- * @a local_abspath will be taken over and then cleared by this function.
+ * Recurse from @a local_abspath, cleaning up unfinished tasks. Perform
+ * any temporary allocations in @a scratch_pool. If @a break_locks is TRUE
+ * Any working copy locks under @a local_abspath will be taken over and then
+ * cleared by this function.
+ * WARNING: If @a break_locks is TRUE there is no mechanism that will protect
+ * locks that are still being used.
+ *
+ * If @a fix_recorded_timestamps is TRUE the recorded timestamps of unmodified
+ * files will be updated, which will improve performance of future is-modified
+ * checks.
*
- * WARNING: there is no mechanism that will protect locks that are still being
- * used.
+ * If @a vacuum_pristines is TRUE, try to remove unreferenced pristines from
+ * the working copy.
*
* If @a cancel_func is non-NULL, invoke it with @a cancel_baton at various
* points during the operation. If it returns an error (typically
* #SVN_ERR_CANCELLED), return that error immediately.
*
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_wc_cleanup4(svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ svn_boolean_t break_locks,
+ svn_boolean_t fix_recorded_timestamps,
+ svn_boolean_t clear_dav_cache,
+ svn_boolean_t vacuum_pristines,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_wc_cleanup4() but will always break locks, fix recorded
+ * timestamps, clear the dav cache and vacuum pristines.
+ *
* @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.8 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_wc_cleanup3(svn_wc_context_t *wc_ctx,
const char *local_abspath,
Modified: subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_xml.h
URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_xml.h?rev=1549081&r1=1549080&r2=1549081&view=diff
==============================================================================
--- subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_xml.h (original)
+++ subversion/branches/invoke-diff-cmd-feature/subversion/include/svn_xml.h Sun Dec 8 17:56:46 2013
@@ -323,7 +323,7 @@ svn_xml_make_open_tag(svn_stringbuf_t **
apr_pool_t *pool,
enum svn_xml_open_tag_style style,
const char *tagname,
- ...);
+ ...) SVN_NEEDS_SENTINEL_NULL;
/** Like svn_xml_make_open_tag(), but takes a @c va_list instead of being