You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2013/07/07 07:06:51 UTC
svn commit: r1500370 [1/5] - in /subversion/branches/javahl-1.8-extensions:
./ build/ac-macros/ subversion/bindings/javahl/
subversion/bindings/javahl/native/
subversion/bindings/javahl/tests/org/apache/subversion/javahl/
subversion/include/private/ su...
Author: brane
Date: Sun Jul 7 05:06:50 2013
New Revision: 1500370
URL: http://svn.apache.org/r1500370
Log:
On the javahl-1.8-extensions branch: Sync JavaHL with trunk up to r1500364.
Sync with branches/1.8.x up to r1500366.
Added:
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/PropertyTable.cpp
- copied unchanged from r1500364, subversion/trunk/subversion/bindings/javahl/native/PropertyTable.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/PropertyTable.h
- copied unchanged from r1500364, subversion/trunk/subversion/bindings/javahl/native/PropertyTable.h
Removed:
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RevpropTable.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RevpropTable.h
Modified:
subversion/branches/javahl-1.8-extensions/ (props changed)
subversion/branches/javahl-1.8-extensions/build/ac-macros/compiler.m4
subversion/branches/javahl-1.8-extensions/configure.ac (contents, props changed)
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/ (props changed)
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.h
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RemoteSession.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_client_private.h
subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_io_private.h
subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_ra_private.h
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/client.h
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/copy.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/diff.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/log.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/merge.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/mergeinfo.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/ra.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_delta/compat.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_fs_base/bdb/env.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_fs_base/tree.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_fs_fs/tree.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra/ra_loader.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra/util.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/blame.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/commit.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/getdate.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/getlocations.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/getlocationsegments.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/getlocks.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/inherited_props.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/log.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/mergeinfo.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/options.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/property.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/replay.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/serf.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/update.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_serf/util.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_svn/client.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_ra_svn/protocol
subversion/branches/javahl-1.8-extensions/subversion/libsvn_repos/fs-wrap.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_subr/named_atomic.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_subr/sqlite.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_subr/stream.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_wc/update_editor.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_wc/upgrade.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_wc/wc_db.c
subversion/branches/javahl-1.8-extensions/subversion/libsvn_wc/wc_db.h
subversion/branches/javahl-1.8-extensions/subversion/libsvn_wc/wc_db_update_move.c
subversion/branches/javahl-1.8-extensions/subversion/mod_dav_svn/lock.c
subversion/branches/javahl-1.8-extensions/subversion/mod_dav_svn/version.c
subversion/branches/javahl-1.8-extensions/subversion/po/de.po
subversion/branches/javahl-1.8-extensions/subversion/po/zh_CN.po
subversion/branches/javahl-1.8-extensions/subversion/svn/cl.h
subversion/branches/javahl-1.8-extensions/subversion/svn/merge-cmd.c
subversion/branches/javahl-1.8-extensions/subversion/svn/mergeinfo-cmd.c
subversion/branches/javahl-1.8-extensions/subversion/svn/svn.c
subversion/branches/javahl-1.8-extensions/subversion/svn/util.c
subversion/branches/javahl-1.8-extensions/subversion/svnadmin/svnadmin.c
subversion/branches/javahl-1.8-extensions/subversion/svnlook/svnlook.c
subversion/branches/javahl-1.8-extensions/subversion/svnserve/serve.c
subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.c
subversion/branches/javahl-1.8-extensions/tools/server-side/svnpubsub/svnpubsub/server.py
Propchange: subversion/branches/javahl-1.8-extensions/
------------------------------------------------------------------------------
Merged /subversion/branches/1.8.x:r1494631-1500366
Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,1491432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,1494223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,1495446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,1497551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226
Modified: subversion/branches/javahl-1.8-extensions/build/ac-macros/compiler.m4
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/build/ac-macros/compiler.m4?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/build/ac-macros/compiler.m4 (original)
+++ subversion/branches/javahl-1.8-extensions/build/ac-macros/compiler.m4 Sun Jul 7 05:06:50 2013
@@ -70,6 +70,9 @@ AC_DEFUN([SVN_CC_MODE_SETUP],
CFLAGS="$CFLAGS_KEEP"
AC_SUBST(CMODEFLAGS)
AC_SUBST(CMAINTAINERFLAGS)
+
+ dnl Tell clang to not accept unknown warning flags
+ SVN_CFLAGS_ADD_IFELSE([-Werror=unknown-warning-option])
])
@@ -86,4 +89,7 @@ AC_DEFUN([SVN_CXX_MODE_SETUP],
CXXFLAGS="$CXXFLAGS_KEEP"
AC_SUBST(CXXMODEFLAGS)
AC_SUBST(CXXMAINTAINERFLAGS)
+
+ dnl Tell clang++ to not accept unknown warning flags
+ SVN_CXXFLAGS_ADD_IFELSE([-Werror=unknown-warning-option])
])
Modified: subversion/branches/javahl-1.8-extensions/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/configure.ac?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/configure.ac (original)
+++ subversion/branches/javahl-1.8-extensions/configure.ac Sun Jul 7 05:06:50 2013
@@ -1117,6 +1117,13 @@ elif test "$enable_optimization" = "no";
# # do nothing
fi
+dnl Dump the current compiler options
+AC_MSG_NOTICE([C compiler flags: $CFLAGS])
+AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
+AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
+AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
+AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS])
+AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS])
AC_ARG_ENABLE(full-version-match,
AS_HELP_STRING([--disable-full-version-match],
Propchange: subversion/branches/javahl-1.8-extensions/configure.ac
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sun Jul 7 05:06:50 2013
@@ -0,0 +1,79 @@
+/subversion/branches/1.5.x-r30215/configure.ac:870312
+/subversion/branches/1.7.x-fs-verify/configure.ac:1146708,1161180
+/subversion/branches/1.8.x/configure.ac:1483275-1500366
+/subversion/branches/1.8.x-libsvnjavahl-version/configure.ac:1483910-1485054
+/subversion/branches/1.8.x-r1477876/configure.ac:1477981-1487716
+/subversion/branches/1.8.x-r1481625/configure.ac:1481637-1482135
+/subversion/branches/1.8.x-svn_fs_info-removal/configure.ac:1467420-1468159
+/subversion/branches/10Gb/configure.ac:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/configure.ac:965046-1000689
+/subversion/branches/auto-props-sdc/configure.ac:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/configure.ac:872050-872529
+/subversion/branches/diff-callbacks3/configure.ac:870059-870761
+/subversion/branches/diff-optimizations/configure.ac:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/configure.ac:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/configure.ac:870728-871118
+/subversion/branches/double-delete/configure.ac:870511-872970
+/subversion/branches/ev2-export/configure.ac:1325914,1332738,1413107
+/subversion/branches/explore-wc/configure.ac:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/configure.ac:871779-873302
+/subversion/branches/fs-rep-sharing/configure.ac:869036-873803
+/subversion/branches/fsfs-pack/configure.ac:873717-874575
+/subversion/branches/gnome-keyring/configure.ac:870558-871410
+/subversion/branches/gpg-agent-password-store/configure.ac:1005036-1150766
+/subversion/branches/http-protocol-v2/configure.ac:874395-876041
+/subversion/branches/in-memory-cache/configure.ac:869829-871452
+/subversion/branches/in-repo-authz/configure.ac:1414342-1424779
+/subversion/branches/inheritable-props/configure.ac:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/configure.ac:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/configure.ac:998649-998852
+/subversion/branches/integrate-compression-level/configure.ac:1068651-1072287
+/subversion/branches/integrate-io-improvements/configure.ac:1068684-1072297
+/subversion/branches/integrate-is-cachable/configure.ac:1072568-1074082
+/subversion/branches/integrate-partial-getter/configure.ac:1072558-1076552
+/subversion/branches/integrate-readline-speedup/configure.ac:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/configure.ac:1068695-1072516
+/subversion/branches/integrate-string-improvements/configure.ac:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/configure.ac:1072541-1078213
+/subversion/branches/issue-2779-dev/configure.ac:965496-984198
+/subversion/branches/issue-2843-dev/configure.ac:871432-874179
+/subversion/branches/issue-3000/configure.ac:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/configure.ac:873375-874084
+/subversion/branches/issue-3148-dev/configure.ac:875193-875204
+/subversion/branches/issue-3220-dev/configure.ac:872210-872226
+/subversion/branches/issue-3242-dev/configure.ac:879653-896436
+/subversion/branches/issue-3334-dirs/configure.ac:875156-875867
+/subversion/branches/issue-3975/configure.ac:1152931-1160746
+/subversion/branches/issue-4116-dev/configure.ac:1424719-1425040
+/subversion/branches/issue-4194-dev/configure.ac:1410507-1414880
+/subversion/branches/javahl-ra/configure.ac:1342682,1344977
+/subversion/branches/kwallet/configure.ac:870785-871314
+/subversion/branches/log-g-performance/configure.ac:870941-871032
+/subversion/branches/merge-skips-obstructions/configure.ac:874525-874615
+/subversion/branches/multi-layer-moves/configure.ac:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/configure.ac:870276,870376
+/subversion/branches/node_pool/configure.ac:1304828-1305388
+/subversion/branches/performance/configure.ac:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-1029336,1029339-10293
40,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/py-tests-as-modules/configure.ac:956579-1033052
+/subversion/branches/ra_serf-digest-authn/configure.ac:875693-876404
+/subversion/branches/reintegrate-improvements/configure.ac:873853-874164
+/subversion/branches/revprop-cache/configure.ac:1298521-1326293
+/subversion/branches/revprop-packing/configure.ac:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/configure.ac:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/configure.ac:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/configure.ac:918519-934609
+/subversion/branches/svn_mutex/configure.ac:1141683-1182099
+/subversion/branches/svnpatch-diff/configure.ac:865738-876477
+/subversion/branches/svnraisetc/configure.ac:874709-875149
+/subversion/branches/svnserve-logging/configure.ac:869828-870893
+/subversion/branches/tc-issue-3334/configure.ac:874697-874773
+/subversion/branches/tc-merge-notify/configure.ac:874017-874062
+/subversion/branches/tc-resolve/configure.ac:874191-874239
+/subversion/branches/tc_url_rev/configure.ac:874351-874483
+/subversion/branches/tree-conflicts/configure.ac:868291-873154
+/subversion/branches/tree-conflicts-notify/configure.ac:873926-874008
+/subversion/branches/tweak-build-take-two/configure.ac:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/configure.ac:1060426-1064427
+/subversion/branches/verify-at-commit/configure.ac:1462039-1462408
+/subversion/branches/wc-collate-path/configure.ac:1407642
+/subversion/trunk/configure.ac:1467440,1467450,1467481,1467587,1467597,1467668,1467675,1467803,1467807,1468151,1468347,1468395,1468439,1468487,1468565-1468566,1469248,1469363,1469478,1469489,1469512-1469513,1469550,1469556,1469645,1469674,1469862,1469866,1469871,1469994,1470031,1470037,1470238,1470246,1470248,1470537,1470738,1470781,1470898,1470904,1470908,1470913,1470936,1470993-1470994,1471028-1471029,1471107,1471153,1471302,1471443,1471490,1471744,1475704,1475724,1475772,1475963,1476092,1476155,1476181,1476193,1476254,1476359,1476366,1476607,1477294,1477359,1477729-1477730,1477876,1477891,1478001,1478220-1478221,1478465,1478897,1478951,1478987,1478998,1479320-1479321,1479323,1479326,1479329,1479540,1479563,1479605,1479896,1480054,1480077,1480080,1480082,1480119,1480149,1480344,1480412,1480442,1480616,1480641-1480642,1480664,1480669,1480723,1480738,1480765,1481010,1481594,1481596,1481625,1481627-1481628,1481631-1481632,1481772,1481800,1481813,1481847-1481848,1481944,1481981,148228
2,1482327,1482338,1482350,1482354,1482436,1482479,1482524,1482528,1482536,1482554,1482558,1482592,1482724,1482759,1482779,1482829,1482969-1482970,1482973,1483015,1483077,1483101,1483116,1483125,1483391,1483397,1483555,1483557,1483575,1483580,1483781,1483927,1483939,1483947,1483964-1483965,1483968,1483972,1483975,1483977,1483984,1484006,1484016-1484017,1484023,1484755,1485018,1485127,1485350,1485413,1485427,1485447,1485449,1485497,1485501,1485650,1486072,1486457,1486572,1486809,1486915,1486931,1487083,1488183,1488267,1488294,1488425,1488639,1488878,1489114,1489116,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1491432,1491499,1491707,1491770,1492005,1492020,1492145,1492148,1492164,1492264,1492295,1493424,1493475,1493703,1493720,1493951,1494171,1494223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,1495446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,1497551,1497804,1498136,1498456,1498550,1498564,1498885,1499095-1499096,149
9727,1500226
Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/
------------------------------------------------------------------------------
Merged /subversion/branches/1.8.x/subversion/bindings/javahl:r1494631-1500366
Merged /subversion/trunk/subversion/bindings/javahl:r1500024-1500364
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.cpp?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.cpp Sun Jul 7 05:06:50 2013
@@ -30,7 +30,7 @@
#include "Iterator.h"
#include "JNIByteArray.h"
#include "LockTokenTable.h"
-#include "RevpropTable.h"
+#include "PropertyTable.h"
#include "RemoteSession.h"
#include <apr_tables.h>
@@ -69,7 +69,6 @@ CommitEditor::createInstance(jobject jse
return editor->getCppAddr();
}
-
CommitEditor::CommitEditor(RemoteSession* session,
jobject jrevprops, jobject jcommit_callback,
jobject jlock_tokens, jboolean jkeep_locks)
@@ -90,7 +89,7 @@ CommitEditor::CommitEditor(RemoteSession
&m_callback_session_uuid,
pool.getPool()),);
- RevpropTable revprops(jrevprops, true);
+ PropertyTable revprops(jrevprops, true);
if (JNIUtil::isJavaExceptionThrown())
return;
LockTokenTable lock_tokens(jlock_tokens);
@@ -105,8 +104,8 @@ CommitEditor::CommitEditor(RemoteSession
m_callback.callback, &m_callback,
lock_tokens.hash(subPool, true),
bool(jkeep_locks),
- NULL, // svn_ra__provide_base_cb_t
- NULL, // svn_ra__provide_props_cb_t
+ this->provide_base_cb,
+ this->provide_props_cb,
this->get_copysrc_kind_cb, this,
pool.getPool(), // result pool
subPool.getPool()), // scratch pool
@@ -265,7 +264,7 @@ void CommitEditor::addDirectory(jstring
Iterator children(jchildren);
if (JNIUtil::isJavaExceptionThrown())
return;
- RevpropTable properties(jproperties, true);
+ PropertyTable properties(jproperties, true);
if (JNIUtil::isJavaExceptionThrown())
return;
@@ -290,7 +289,7 @@ void CommitEditor::addFile(jstring jrelp
SVN_JNI_ERR(m_session->m_context->checkCancel(m_session->m_context),);
InputStream contents(jcontents);
- RevpropTable properties(jproperties, true);
+ PropertyTable properties(jproperties, true);
if (JNIUtil::isJavaExceptionThrown())
return;
@@ -342,7 +341,7 @@ void CommitEditor::alterDirectory(jstrin
Iterator children(jchildren);
if (JNIUtil::isJavaExceptionThrown())
return;
- RevpropTable properties(jproperties, true);
+ PropertyTable properties(jproperties, true);
if (JNIUtil::isJavaExceptionThrown())
return;
@@ -366,7 +365,7 @@ void CommitEditor::alterFile(jstring jre
SVN_JNI_ERR(m_session->m_context->checkCancel(m_session->m_context),);
InputStream contents(jcontents);
- RevpropTable properties(jproperties, true);
+ PropertyTable properties(jproperties, true);
if (JNIUtil::isJavaExceptionThrown())
return;
@@ -487,23 +486,20 @@ void CommitEditor::abort()
}
-svn_error_t*
-CommitEditor::get_copysrc_kind_cb(svn_node_kind_t* kind, void* baton,
- const char* repos_relpath,
- svn_revnum_t src_revision,
- apr_pool_t *scratch_pool)
+namespace {
+svn_error_t* open_callback_session(svn_ra_session_t*& session,
+ const char* url, const char* uuid,
+ RemoteSessionContext* context,
+ SVN::Pool& sessionPool)
{
- CommitEditor* editor = static_cast<CommitEditor*>(baton);
- if (!editor->m_callback_session)
+ if (!session)
{
- const char* corrected_url;
- SVN_ERR(svn_ra_open4(&editor->m_callback_session, &corrected_url,
- editor->m_callback_session_url,
- editor->m_callback_session_uuid,
- editor->m_session->m_context->getCallbacks(),
- editor->m_session->m_context->getCallbackBaton(),
- editor->m_session->m_context->getConfigData(),
- editor->pool.getPool()));
+ const char* corrected_url = NULL;
+ SVN_ERR(svn_ra_open4(&session, &corrected_url, url, uuid,
+ context->getCallbacks(),
+ context->getCallbackBaton(),
+ context->getConfigData(),
+ sessionPool.getPool()));
if (corrected_url)
{
@@ -515,12 +511,79 @@ CommitEditor::get_copysrc_kind_cb(svn_no
SVN_ERR_RA_ILLEGAL_URL, NULL,
_("Repository URL changed while session was open.\n"
"Expected URL: %s\nApparent URL: %s"),
- editor->m_callback_session_url, corrected_url);
+ url, corrected_url);
}
}
+ return SVN_NO_ERROR;
+}
+} // anonymous namespace
+
+
+svn_error_t*
+CommitEditor::provide_base_cb(svn_stream_t **contents,
+ svn_revnum_t *revision,
+ void *baton,
+ const char *repos_relpath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ *contents = NULL;
+ *revision = NULL;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t*
+CommitEditor::provide_props_cb(apr_hash_t **props,
+ svn_revnum_t *revision,
+ void *baton,
+ const char *repos_relpath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ CommitEditor* editor = static_cast<CommitEditor*>(baton);
+ SVN_ERR(open_callback_session(editor->m_callback_session,
+ editor->m_callback_session_url,
+ editor->m_callback_session_uuid,
+ editor->m_session->m_context,
+ editor->pool));
+
+ svn_node_kind_t kind = svn_node_unknown;
+ SVN_ERR(svn_ra_check_path(editor->m_callback_session,
+ repos_relpath, SVN_INVALID_REVNUM, &kind,
+ scratch_pool));
+
+ // FIXME: Getting properties from the youngest revision is in fact
+ // not such a bright idea, as the path may have been moved or
+ // deleted in the path.
+ if (kind == svn_node_file)
+ return svn_ra_get_file(editor->m_callback_session,
+ repos_relpath, SVN_INVALID_REVNUM,
+ NULL, revision, props, scratch_pool);
+ else if (kind == svn_node_dir)
+ return svn_ra_get_dir2(editor->m_callback_session, NULL, revision, props,
+ repos_relpath, SVN_INVALID_REVNUM, 0, scratch_pool);
+ else
+ return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
+ _("Expected node kind '%s' or '%s' but got '%s'"),
+ svn_node_kind_to_word(svn_node_file),
+ svn_node_kind_to_word(svn_node_dir),
+ svn_node_kind_to_word(kind));
+}
+
+svn_error_t*
+CommitEditor::get_copysrc_kind_cb(svn_node_kind_t* kind, void* baton,
+ const char* repos_relpath,
+ svn_revnum_t src_revision,
+ apr_pool_t *scratch_pool)
+{
+ CommitEditor* editor = static_cast<CommitEditor*>(baton);
+ SVN_ERR(open_callback_session(editor->m_callback_session,
+ editor->m_callback_session_url,
+ editor->m_callback_session_uuid,
+ editor->m_session->m_context,
+ editor->pool));
- SVN::Pool subPool(editor->pool);
return svn_ra_check_path(editor->m_callback_session,
repos_relpath, src_revision, kind,
- subPool.getPool());
+ scratch_pool);
}
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.h?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/CommitEditor.h Sun Jul 7 05:06:50 2013
@@ -90,7 +90,19 @@ private:
jobject jrevprops, jobject jcommit_callback,
jobject jlock_tokens, jboolean jkeep_locks);
- // This is our svn_ra__get_copysrc_kind_cb_t for the commit editor.
+ // This is our private callbacks for the commit editor.
+ static svn_error_t* provide_base_cb(svn_stream_t **contents,
+ svn_revnum_t *revision,
+ void *baton,
+ const char *repos_relpath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+ static svn_error_t* provide_props_cb(apr_hash_t **props,
+ svn_revnum_t *revision,
+ void *baton,
+ const char *repos_relpath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
static svn_error_t* get_copysrc_kind_cb(svn_node_kind_t* kind, void* baton,
const char* repos_relpath,
svn_revnum_t src_revision,
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp Sun Jul 7 05:06:50 2013
@@ -908,11 +908,9 @@ JNIUtil::getDate(jobject jdate)
*/
jbyteArray JNIUtil::makeJByteArray(const void *data, int length)
{
- if (data == NULL)
- {
- // a NULL will create no Java array
- return NULL;
- }
+ // a NULL will create no Java array
+ if (!data)
+ return NULL;
JNIEnv *env = getEnv();
@@ -943,6 +941,10 @@ jbyteArray JNIUtil::makeJByteArray(const
*/
jbyteArray JNIUtil::makeJByteArray(const svn_string_t *str)
{
+ // a NULL will create no Java array
+ if (!str)
+ return NULL;
+
return JNIUtil::makeJByteArray(str->data, static_cast<int>(str->len));
}
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RemoteSession.cpp?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RemoteSession.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/RemoteSession.cpp Sun Jul 7 05:06:50 2013
@@ -410,14 +410,13 @@ RemoteSession::getRevisionByTimestamp(jl
}
namespace {
-bool byte_array_to_svn_string(JNIByteArray& ary, svn_string_t& str)
+svn_string_t*
+byte_array_to_svn_string(JNIByteArray& ary, SVN::Pool& scratch_pool)
{
if (ary.isNull())
- return false;
-
- str.data = reinterpret_cast<const char*>(ary.getBytes());
- str.len = ary.getLength();
- return true;
+ return NULL;
+ return svn_string_ncreate(reinterpret_cast<const char*>(ary.getBytes()),
+ ary.getLength(), scratch_pool.getPool());
}
} // anonymous namespace
@@ -438,21 +437,17 @@ RemoteSession::changeRevisionProperty(
if (JNIUtil::isExceptionThrown())
return;
- svn_string_t str_old_value;
- svn_string_t* const p_old_value = &str_old_value;
- svn_string_t* const* pp_old_value = NULL;
- if (byte_array_to_svn_string(old_value, str_old_value))
- pp_old_value = &p_old_value;
-
- svn_string_t str_value;
- svn_string_t* p_value = NULL;
- if (byte_array_to_svn_string(value, str_value))
- p_value = &str_value;
-
SVN::Pool subPool(pool);
+ svn_string_t* const* p_old_value = NULL;
+ svn_string_t* const str_old_value =
+ byte_array_to_svn_string(old_value, subPool);
+ if (str_old_value)
+ p_old_value = &str_old_value;
+
SVN_JNI_ERR(svn_ra_change_rev_prop2(m_session,
svn_revnum_t(jrevision),
- name, pp_old_value, p_value,
+ name, p_old_value,
+ byte_array_to_svn_string(value, subPool),
subPool.getPool()), );
}
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp Sun Jul 7 05:06:50 2013
@@ -51,7 +51,7 @@
#include "CommitMessage.h"
#include "EnumMapper.h"
#include "StringArray.h"
-#include "RevpropTable.h"
+#include "PropertyTable.h"
#include "DiffOptions.h"
#include "CreateJ.h"
#include "svn_auth.h"
@@ -319,7 +319,7 @@ jlong SVNClient::checkout(const char *mo
}
void SVNClient::remove(Targets &targets, CommitMessage *message, bool force,
- bool keep_local, RevpropTable &revprops,
+ bool keep_local, PropertyTable &revprops,
CommitCallback *callback)
{
SVN::Pool subPool(pool);
@@ -419,7 +419,7 @@ jlongArray SVNClient::update(Targets &ta
void SVNClient::commit(Targets &targets, CommitMessage *message,
svn_depth_t depth, bool noUnlock, bool keepChangelist,
- StringArray &changelists, RevpropTable &revprops,
+ StringArray &changelists, PropertyTable &revprops,
CommitCallback *callback)
{
SVN::Pool subPool(pool);
@@ -444,7 +444,7 @@ void SVNClient::commit(Targets &targets,
void SVNClient::copy(CopySources ©Sources, const char *destPath,
CommitMessage *message, bool copyAsChild,
bool makeParents, bool ignoreExternals,
- RevpropTable &revprops, CommitCallback *callback)
+ PropertyTable &revprops, CommitCallback *callback)
{
SVN::Pool subPool(pool);
@@ -473,7 +473,7 @@ void SVNClient::copy(CopySources ©So
void SVNClient::move(Targets &srcPaths, const char *destPath,
CommitMessage *message, bool force, bool moveAsChild,
bool makeParents, bool metadataOnly, bool allowMixRev,
- RevpropTable &revprops, CommitCallback *callback)
+ PropertyTable &revprops, CommitCallback *callback)
{
SVN::Pool subPool(pool);
@@ -498,7 +498,7 @@ void SVNClient::move(Targets &srcPaths,
}
void SVNClient::mkdir(Targets &targets, CommitMessage *message,
- bool makeParents, RevpropTable &revprops,
+ bool makeParents, PropertyTable &revprops,
CommitCallback *callback)
{
SVN::Pool subPool(pool);
@@ -616,7 +616,7 @@ void SVNClient::doImport(const char *pat
CommitMessage *message, svn_depth_t depth,
bool noIgnore, bool noAutoProps,
bool ignoreUnknownNodeTypes,
- RevpropTable &revprops,
+ PropertyTable &revprops,
ImportFilterCallback *ifCallback,
CommitCallback *commitCallback)
{
@@ -905,7 +905,7 @@ void SVNClient::propertySetRemote(const
const char *name,
CommitMessage *message,
JNIByteArray &value, bool force,
- RevpropTable &revprops,
+ PropertyTable &revprops,
CommitCallback *callback)
{
SVN::Pool subPool(pool);
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h Sun Jul 7 05:06:50 2013
@@ -53,7 +53,7 @@ class PatchCallback;
class ChangelistCallback;
class CommitMessage;
class StringArray;
-class RevpropTable;
+class PropertyTable;
class DiffOptions;
#include "svn_types.h"
#include "svn_client.h"
@@ -87,7 +87,7 @@ class SVNClient :public SVNBase
void propertySetRemote(const char *path, long base_rev, const char *name,
CommitMessage *message,
JNIByteArray &value, bool force,
- RevpropTable &revprops, CommitCallback *callback);
+ PropertyTable &revprops, CommitCallback *callback);
void properties(const char *path, Revision &revision,
Revision &pegRevision, svn_depth_t depth,
StringArray &changelists, ProplistCallback *callback);
@@ -115,7 +115,7 @@ class SVNClient :public SVNBase
void doImport(const char *path, const char *url, CommitMessage *message,
svn_depth_t depth, bool noIgnore, bool noAutoProps,
bool ignoreUnknownNodeTypes,
- RevpropTable &revprops, ImportFilterCallback *ifCallback,
+ PropertyTable &revprops, ImportFilterCallback *ifCallback,
CommitCallback *commitCallback);
jlong doSwitch(const char *path, const char *url, Revision &revision,
Revision &pegRevision, svn_depth_t depth,
@@ -129,18 +129,18 @@ class SVNClient :public SVNBase
svn_wc_conflict_choice_t choice);
void cleanup(const char *path);
void mkdir(Targets &targets, CommitMessage *message, bool makeParents,
- RevpropTable &revprops, CommitCallback *callback);
+ PropertyTable &revprops, CommitCallback *callback);
void move(Targets &srcPaths, const char *destPath,
CommitMessage *message, bool force, bool moveAsChild,
bool makeParents, bool metadataOnly, bool allowMixRev,
- RevpropTable &revprops, CommitCallback *callback);
+ PropertyTable &revprops, CommitCallback *callback);
void copy(CopySources ©Sources, const char *destPath,
CommitMessage *message, bool copyAsChild, bool makeParents,
- bool ignoreExternals, RevpropTable &revprops,
+ bool ignoreExternals, PropertyTable &revprops,
CommitCallback *callback);
void commit(Targets &targets, CommitMessage *message, svn_depth_t depth,
bool noUnlock, bool keepChangelist,
- StringArray &changelists, RevpropTable &revprops,
+ StringArray &changelists, PropertyTable &revprops,
CommitCallback *callback);
jlongArray update(Targets &targets, Revision &revision, svn_depth_t depth,
bool depthIsSticky, bool makeParents, bool ignoreExternals,
@@ -149,7 +149,7 @@ class SVNClient :public SVNBase
bool no_ignore, bool no_autoprops, bool add_parents);
void revert(const char *path, svn_depth_t depth, StringArray &changelists);
void remove(Targets &targets, CommitMessage *message, bool force,
- bool keep_local, RevpropTable &revprops,
+ bool keep_local, PropertyTable &revprops,
CommitCallback *callback);
jlong checkout(const char *moduleName, const char *destPath,
Revision &revision, Revision &pegRevsion, svn_depth_t depth,
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Sun Jul 7 05:06:50 2013
@@ -50,7 +50,7 @@
#include "ImportFilterCallback.h"
#include "ChangelistCallback.h"
#include "StringArray.h"
-#include "RevpropTable.h"
+#include "PropertyTable.h"
#include "VersionExtended.h"
#include "DiffOptions.h"
#include "svn_version.h"
@@ -384,7 +384,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
@@ -498,7 +498,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
@@ -539,7 +539,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
@@ -577,7 +577,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
@@ -610,7 +610,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
@@ -761,7 +761,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
@@ -1012,7 +1012,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable);
if (JNIUtil::isExceptionThrown())
return;
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Sun Jul 7 05:06:50 2013
@@ -3300,6 +3300,16 @@ public class BasicTests extends SVNTests
}
}
+ private static class CountingProgressListener implements ProgressCallback
+ {
+ public void onProgress(ProgressEvent event)
+ {
+ // TODO: Examine the byte counts from "event".
+ gotProgress = true;
+ }
+ public boolean gotProgress = false;
+ }
+
public void testDataTransferProgressReport() throws Throwable
{
// ### FIXME: This isn't working over ra_local, because
@@ -3309,25 +3319,13 @@ public class BasicTests extends SVNTests
// build the test setup
OneTest thisTest = new OneTest();
- ProgressCallback listener = new ProgressCallback()
- {
- public void onProgress(ProgressEvent event)
- {
- // TODO: Examine the byte counts from "event".
- throw new RuntimeException("Progress reported as expected");
- }
- };
+ CountingProgressListener listener = new CountingProgressListener();
client.setProgressCallback(listener);
// Perform an update to exercise the progress notification.
- try
- {
- update(thisTest);
+ update(thisTest);
+ if (!listener.gotProgress)
fail("No progress reported");
- }
- catch (RuntimeException progressReported)
- {
- }
}
/**
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java Sun Jul 7 05:06:50 2013
@@ -29,6 +29,7 @@ import org.apache.subversion.javahl.type
import java.util.Arrays;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
@@ -308,8 +309,20 @@ public class SVNRemoteTests extends SVNT
}
catch (ClientException ex)
{
- assertEquals("Disabled repository feature",
- ex.getAllMessages().get(0).getMessage());
+ ClientException.ErrorMessage error = null;
+ for (ClientException.ErrorMessage m : ex.getAllMessages())
+ if (!m.isGeneric()) {
+ error = m;
+ break;
+ }
+
+ if (error == null)
+ fail("Failed with no error message");
+
+ if (error.getCode() != 175002 && // SVN_ERR_RA_DAV_REQUEST_FAILED
+ error.getCode() != 165006) // SVN_ERR_REPOS_DISABLED_FEATURE
+ fail(error.getMessage());
+
return;
}
@@ -351,8 +364,11 @@ public class SVNRemoteTests extends SVNT
assertEquals(fetched_rev, 1);
assertEquals(contents.toString("UTF-8"),
"This is the file 'lambda'.");
- for (Map.Entry<String, byte[]> e : properties.entrySet())
- assertTrue(e.getKey().startsWith("svn:entry:"));
+ for (Map.Entry<String, byte[]> e : properties.entrySet()) {
+ final String key = e.getKey();
+ assertTrue(key.startsWith("svn:entry:")
+ || key.startsWith("svn:wc:"));
+ }
}
public void testGetDirectory() throws Exception
@@ -373,8 +389,11 @@ public class SVNRemoteTests extends SVNT
assertEquals(dirents.get("E").getPath(), "E");
assertEquals(dirents.get("F").getPath(), "F");
assertEquals(dirents.get("lambda").getPath(), "lambda");
- for (Map.Entry<String, byte[]> e : properties.entrySet())
- assertTrue(e.getKey().startsWith("svn:entry:"));
+ for (Map.Entry<String, byte[]> e : properties.entrySet()) {
+ final String key = e.getKey();
+ assertTrue(key.startsWith("svn:entry:")
+ || key.startsWith("svn:wc:"));
+ }
}
private final class CommitContext implements CommitCallback
@@ -574,19 +593,19 @@ public class SVNRemoteTests extends SVNT
assertTrue(Arrays.equals(eolstyle, propval));
}
- public void testEditorSetFileProps() throws Exception
+ public void testEditorSetFileContents() throws Exception
{
Charset UTF8 = Charset.forName("UTF-8");
ISVNRemote session = getSession();
- byte[] eolstyle = "CRLF".getBytes(UTF8);
- HashMap<String, byte[]> props = new HashMap<String, byte[]>();
- props.put("svn:eol-style", eolstyle);
+ byte[] contents = "This is modified file 'alpha'.".getBytes(UTF8);
+ Checksum hash = new Checksum(SHA1(contents), Checksum.Kind.SHA1);
+ ByteArrayInputStream stream = new ByteArrayInputStream(contents);
CommitContext cc =
- new CommitContext(session, "Change eol-style on A/B/E/alpha");
+ new CommitContext(session, "Change contents of A/B/E/alpha");
try {
- cc.editor.alterFile("A/B/E/alpha", 1, null, null, props);
+ cc.editor.alterFile("A/B/E/alpha", 1, hash, stream, null);
cc.editor.complete();
} finally {
cc.editor.dispose();
@@ -594,12 +613,10 @@ public class SVNRemoteTests extends SVNT
assertEquals(2, cc.getRevision());
assertEquals(2, session.getLatestRevision());
- byte[] propval = client.propertyGet(session.getSessionUrl()
- + "/A/B/E/alpha",
- "svn:eol-style",
- Revision.HEAD,
- Revision.HEAD);
- assertTrue(Arrays.equals(eolstyle, propval));
+ ByteArrayOutputStream checkcontents = new ByteArrayOutputStream();
+ client.streamFileContent(session.getSessionUrl() + "/A/B/E/alpha",
+ Revision.HEAD, Revision.HEAD, checkcontents);
+ assertTrue(Arrays.equals(contents, checkcontents.toByteArray()));
}
// public void testEditorRotate() throws Exception
@@ -787,7 +804,7 @@ public class SVNRemoteTests extends SVNT
private static class RemoteStatusReceiver implements RemoteStatus
{
- static class StatInfo
+ static class StatInfo implements Comparable<StatInfo>
{
public String relpath = null;
public char kind = ' '; // F, D, L
@@ -813,6 +830,18 @@ public class SVNRemoteTests extends SVNT
this.propsChanged = propsChanged;
this.info = info;
}
+
+ @Override
+ public boolean equals(Object statinfo)
+ {
+ final StatInfo that = (StatInfo)statinfo;
+ return this.relpath.equals(that.relpath);
+ }
+
+ public int compareTo(StatInfo that)
+ {
+ return this.relpath.compareTo(that.relpath);
+ }
}
private boolean debug;
@@ -946,7 +975,11 @@ public class SVNRemoteTests extends SVNT
} finally {
rp.dispose();
}
+
assertEquals(4, receiver.status.size());
+
+ // ra_serf returns the entries in inverted order compared to ra_local.
+ Collections.sort(receiver.status);
RemoteStatusReceiver.StatInfo mod = receiver.status.get(3);
assertEquals("A/D/gamma", mod.relpath);
assertEquals('F', mod.kind);
@@ -979,6 +1012,9 @@ public class SVNRemoteTests extends SVNT
rp.dispose();
}
assertEquals(3, receiver.status.size());
+
+ // ra_serf returns the entries in inverted order compared to ra_local.
+ Collections.sort(receiver.status);
RemoteStatusReceiver.StatInfo mod = receiver.status.get(2);
assertEquals("A/mu", mod.relpath);
assertEquals(' ', mod.kind);
Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Sun Jul 7 05:06:50 2013
@@ -324,12 +324,12 @@ class SVNTests extends TestCase
public boolean prompt(String realm, String username)
{
- return false;
+ return true;
}
public boolean prompt(String realm, String username, boolean maySave)
{
- return false;
+ return true;
}
public String askQuestion(String realm, String question,
Modified: subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_client_private.h?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_client_private.h Sun Jul 7 05:06:50 2013
@@ -291,6 +291,39 @@ svn_client__copy_foreign(const char *url
svn_client_ctx_t *ctx,
apr_pool_t *scratch_pool);
+/* Same as the public svn_client_mergeinfo_log2 API, except for the addition
+ * of the TARGET_MERGEINFO_CATALOG and RESULT_POOL parameters.
+ *
+ * If TARGET_MERGEINFO_CATALOG is NULL then this acts exactly as the public
+ * API. If *TARGET_MERGEINFO_CATALOG is NULL, then *TARGET_MERGEINFO_CATALOG
+ * is set to the a mergeinfo catalog representing the mergeinfo on
+ * TARGET_PATH_OR_URL@TARGET_PEG_REVISION at DEPTH, (like the public API only
+ * depths of svn_depth_empty or svn_depth_infinity are supported) allocated in
+ * RESULT_POOL. Finally, if *TARGET_MERGEINFO_CATALOG is non-NULL, then it is
+ * assumed to be a mergeinfo catalog representing the mergeinfo on
+ * TARGET_PATH_OR_URL@TARGET_PEG_REVISION at DEPTH.
+ *
+ * The keys for the subtree mergeinfo are the repository root-relative
+ * paths of TARGET_PATH_OR_URL and/or its subtrees, regardless of whether
+ * TARGET_PATH_OR_URL is a URL or WC path.
+ */
+svn_error_t *
+svn_client__mergeinfo_log(svn_boolean_t finding_merged,
+ const char *target_path_or_url,
+ const svn_opt_revision_t *target_peg_revision,
+ svn_mergeinfo_catalog_t *target_mergeinfo_catalog,
+ const char *source_path_or_url,
+ const svn_opt_revision_t *source_peg_revision,
+ const svn_opt_revision_t *source_start_revision,
+ const svn_opt_revision_t *source_end_revision,
+ svn_log_entry_receiver_t log_receiver,
+ void *log_receiver_baton,
+ svn_boolean_t discover_changed_paths,
+ svn_depth_t depth,
+ const apr_array_header_t *revprops,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
#ifdef __cplusplus
}
Modified: subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_io_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_io_private.h?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_io_private.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_io_private.h Sun Jul 7 05:06:50 2013
@@ -90,6 +90,11 @@ svn_stream__set_is_buffered(svn_stream_t
svn_boolean_t
svn_stream__is_buffered(svn_stream_t *stream);
+/** Return the underlying file, if any, associated with the stream, or
+ * NULL if not available. Accessing the file bypasses the stream.
+ */
+apr_file_t *
+svn_stream__aprfile(svn_stream_t *stream);
#ifdef __cplusplus
}
Modified: subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_ra_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_ra_private.h?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_ra_private.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/include/private/svn_ra_private.h Sun Jul 7 05:06:50 2013
@@ -39,15 +39,23 @@
extern "C" {
#endif /* __cplusplus */
-/* Return an error with code SVN_ERR_UNSUPPORTED_FEATURE, and an error
- message referencing PATH_OR_URL, if the "server" pointed to by
- RA_SESSION doesn't support Merge Tracking (e.g. is pre-1.5).
- Perform temporary allocations in POOL. */
+/* Equivalent to svn_ra__assert_capable_server()
+ for SVN_RA_CAPABILITY_MERGEINFO. */
svn_error_t *
svn_ra__assert_mergeinfo_capable_server(svn_ra_session_t *ra_session,
const char *path_or_url,
apr_pool_t *pool);
+/* Return an error with code SVN_ERR_UNSUPPORTED_FEATURE, and an error
+ message referencing PATH_OR_URL, if the "server" pointed to by
+ RA_SESSION doesn't support CAPABILITY (an SVN_RA_CAPABILITY_* constant).
+ Perform temporary allocations in POOL. */
+svn_error_t *
+svn_ra__assert_capable_server(svn_ra_session_t *ra_session,
+ const char *capability,
+ const char *path_or_url,
+ apr_pool_t *pool);
+
/*** Operational Locks ***/
Modified: subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/client.h?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/client.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/client.h Sun Jul 7 05:06:50 2013
@@ -20,7 +20,8 @@
* under the License.
* ====================================================================
*/
-
+
+
#ifndef SVN_LIBSVN_CLIENT_H
#define SVN_LIBSVN_CLIENT_H
@@ -208,6 +209,9 @@ svn_client__repos_location_segments(apr_
Use the authentication baton cached in CTX to authenticate against
the repository. Use POOL for all allocations.
+ See also svn_client__calc_youngest_common_ancestor() to find youngest
+ common ancestor for already fetched history-as-mergeinfo information.
+
See also svn_client__youngest_common_ancestor().
*/
svn_error_t *
@@ -219,6 +223,34 @@ svn_client__get_youngest_common_ancestor
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/* Find the common ancestor of two locations in a repository using already
+ fetched history-as-mergeinfo information.
+
+ Ancestry is determined by the 'copy-from' relationship and the normal
+ successor relationship.
+
+ Set *ANCESTOR_P to the location of the youngest common ancestor of
+ LOC1 and LOC2. If the locations have no common ancestor (including if
+ they don't have the same repository root URL), set *ANCESTOR_P to NULL.
+
+ HISTORY1, HAS_REV_ZERO_HISTORY1, HISTORY2, HAS_REV_ZERO_HISTORY2 are
+ history-as-mergeinfo information as returned by
+ svn_client__get_history_as_mergeinfo() for LOC1 and LOC2 respectively.
+
+ See also svn_client__get_youngest_common_ancestor().
+
+*/
+svn_error_t *
+svn_client__calc_youngest_common_ancestor(svn_client__pathrev_t **ancestor_p,
+ const svn_client__pathrev_t *loc1,
+ apr_hash_t *history1,
+ svn_boolean_t has_rev_zero_history1,
+ const svn_client__pathrev_t *loc2,
+ apr_hash_t *history2,
+ svn_boolean_t has_rev_zero_history2,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
/* Ensure that RA_SESSION's session URL matches SESSION_URL,
reparenting that session if necessary.
Store the previous session URL in *OLD_SESSION_URL (so that if the
@@ -247,7 +279,8 @@ svn_client__ensure_ra_session_url(const
apr_pool_t *pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** RA callbacks ***/
@@ -329,7 +362,8 @@ svn_client__ra_make_cb_baton(svn_wc_cont
apr_pool_t *result_pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** Add/delete ***/
/* If AUTOPROPS is not null: Then read automatic properties matching PATH
@@ -442,7 +476,8 @@ svn_client__make_local_parents(const cha
apr_pool_t *pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** Checkout, update and switch ***/
/* Update a working copy LOCAL_ABSPATH to REVISION, and (if not NULL) set
@@ -581,7 +616,8 @@ svn_client__switch_internal(svn_revnum_t
apr_pool_t *pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** Inheritable Properties ***/
/* Convert any svn_prop_inherited_item_t elements in INHERITED_PROPS which
@@ -626,7 +662,8 @@ svn_client__get_inheritable_props(apr_ha
apr_pool_t *scratch_pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** Editor for repository diff ***/
/* Create an editor for a pure repository comparison, i.e. comparing one
@@ -666,7 +703,8 @@ svn_client__get_diff_editor2(const svn_d
apr_pool_t *result_pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** Editor for diff summary ***/
/* Set *CALLBACKS and *CALLBACK_BATON to a set of diff callbacks that will
@@ -689,7 +727,8 @@ svn_client__get_diff_summarize_callbacks
apr_pool_t *pool);
/* ---------------------------------------------------------------- */
-
+
+
/*** Copy Stuff ***/
/* This structure is used to associate a specific copy or move SRC with a
@@ -730,7 +769,8 @@ typedef struct svn_client__copy_pair_t
} svn_client__copy_pair_t;
/* ---------------------------------------------------------------- */
-
+
+
/*** Commit Stuff ***/
/* WARNING: This is all new, untested, un-peer-reviewed conceptual
@@ -944,7 +984,8 @@ svn_client__do_commit(const char *base_u
apr_pool_t *scratch_pool);
-
+
+
/*** Externals (Modules) ***/
/* Handle changes to the svn:externals property described by EXTERNALS_NEW,
@@ -1116,7 +1157,8 @@ svn_client__resolve_conflicts(svn_boolea
svn_client_ctx_t *ctx,
apr_pool_t *scratch_pool);
-
+
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/copy.c?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/copy.c Sun Jul 7 05:06:50 2013
@@ -385,6 +385,7 @@ static svn_error_t *
verify_wc_dsts(const apr_array_header_t *copy_pairs,
svn_boolean_t make_parents,
svn_boolean_t is_move,
+ svn_boolean_t metadata_only,
svn_client_ctx_t *ctx,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
@@ -435,8 +436,11 @@ verify_wc_dsts(const apr_array_header_t
}
/* Check that there is no unversioned obstruction */
- SVN_ERR(svn_io_check_path(pair->dst_abspath_or_url, &dst_kind,
- iterpool));
+ if (metadata_only)
+ dst_kind = svn_node_none;
+ else
+ SVN_ERR(svn_io_check_path(pair->dst_abspath_or_url, &dst_kind,
+ iterpool));
if (dst_kind != svn_node_none)
{
@@ -527,6 +531,7 @@ static svn_error_t *
verify_wc_srcs_and_dsts(const apr_array_header_t *copy_pairs,
svn_boolean_t make_parents,
svn_boolean_t is_move,
+ svn_boolean_t metadata_only,
svn_client_ctx_t *ctx,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
@@ -557,7 +562,7 @@ verify_wc_srcs_and_dsts(const apr_array_
scratch_pool));
}
- SVN_ERR(verify_wc_dsts(copy_pairs, make_parents, is_move, ctx,
+ SVN_ERR(verify_wc_dsts(copy_pairs, make_parents, is_move, metadata_only, ctx,
result_pool, iterpool));
svn_pool_destroy(iterpool);
@@ -1727,8 +1732,8 @@ repos_to_wc_copy_locked(svn_boolean_t *t
/* We've already checked for physical obstruction by a working file.
But there could also be logical obstruction by an entry whose
working file happens to be missing.*/
- SVN_ERR(verify_wc_dsts(copy_pairs, FALSE, FALSE, ctx,
- scratch_pool, iterpool));
+ SVN_ERR(verify_wc_dsts(copy_pairs, FALSE, FALSE, FALSE /* metadata_only */,
+ ctx, scratch_pool, iterpool));
/* Decide whether the two repositories are the same or not. */
{
@@ -2210,7 +2215,7 @@ try_copy(svn_boolean_t *timestamp_sleep,
if ((! srcs_are_urls) && (! dst_is_url))
{
SVN_ERR(verify_wc_srcs_and_dsts(copy_pairs, make_parents, is_move,
- ctx, pool, pool));
+ metadata_only, ctx, pool, pool));
/* Copy or move all targets. */
if (is_move)
Modified: subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/diff.c?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/diff.c Sun Jul 7 05:06:50 2013
@@ -51,6 +51,7 @@
#include "private/svn_wc_private.h"
#include "private/svn_diff_private.h"
#include "private/svn_subr_private.h"
+#include "private/svn_io_private.h"
#include "svn_private_config.h"
@@ -807,14 +808,23 @@ diff_content_changed(svn_boolean_t *wrot
* ### a non-git compatible diff application.*/
/* We deal in streams, but svn_io_run_diff2() deals in file handles,
- unfortunately, so we need to make these temporary files, and then
- copy the contents to our stream. */
- SVN_ERR(svn_io_open_unique_file3(&outfile, &outfilename, NULL,
- svn_io_file_del_on_pool_cleanup,
- scratch_pool, scratch_pool));
- SVN_ERR(svn_io_open_unique_file3(&errfile, &errfilename, NULL,
- svn_io_file_del_on_pool_cleanup,
- scratch_pool, scratch_pool));
+ so we may need to make temporary files and then copy the contents
+ to our stream. */
+ outfile = svn_stream__aprfile(outstream);
+ if (outfile)
+ outfilename = NULL;
+ else
+ SVN_ERR(svn_io_open_unique_file3(&outfile, &outfilename, NULL,
+ svn_io_file_del_on_pool_cleanup,
+ scratch_pool, scratch_pool));
+
+ errfile = svn_stream__aprfile(errstream);
+ if (errfile)
+ errfilename = NULL;
+ else
+ SVN_ERR(svn_io_open_unique_file3(&errfile, &errfilename, NULL,
+ svn_io_file_del_on_pool_cleanup,
+ scratch_pool, scratch_pool));
SVN_ERR(svn_io_run_diff2(".",
diff_cmd_baton->options.for_external.argv,
@@ -824,20 +834,25 @@ diff_content_changed(svn_boolean_t *wrot
&exitcode, outfile, errfile,
diff_cmd_baton->diff_cmd, scratch_pool));
- SVN_ERR(svn_io_file_close(outfile, scratch_pool));
- SVN_ERR(svn_io_file_close(errfile, scratch_pool));
-
/* Now, open and copy our files to our output streams. */
- SVN_ERR(svn_stream_open_readonly(&stream, outfilename,
- scratch_pool, scratch_pool));
- SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(outstream,
- scratch_pool),
- NULL, NULL, scratch_pool));
- SVN_ERR(svn_stream_open_readonly(&stream, errfilename,
- scratch_pool, scratch_pool));
- SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(errstream,
- scratch_pool),
- NULL, NULL, scratch_pool));
+ if (outfilename)
+ {
+ SVN_ERR(svn_io_file_close(outfile, scratch_pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, outfilename,
+ scratch_pool, scratch_pool));
+ SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(outstream,
+ scratch_pool),
+ NULL, NULL, scratch_pool));
+ }
+ if (errfilename)
+ {
+ SVN_ERR(svn_io_file_close(errfile, scratch_pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, errfilename,
+ scratch_pool, scratch_pool));
+ SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(errstream,
+ scratch_pool),
+ NULL, NULL, scratch_pool));
+ }
/* We have a printed a diff for this path, mark it as visited. */
*wrote_header = TRUE;
Modified: subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/log.c?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/log.c (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/log.c Sun Jul 7 05:06:50 2013
@@ -712,7 +712,17 @@ run_ra_get_log(apr_array_header_t *revis
matching_segment = bsearch(&younger_rev, log_segments->elts,
log_segments->nelts, log_segments->elt_size,
compare_rev_to_segment);
- SVN_ERR_ASSERT(*matching_segment);
+ /* LOG_SEGMENTS is supposed to represent the history of PATHS from
+ the oldest to youngest revs in REVISION_RANGES. This function's
+ current sole caller svn_client_log5 *should* be providing
+ LOG_SEGMENTS that span the oldest to youngest revs in
+ REVISION_RANGES, even if one or more of the svn_location_segment_t's
+ returned have NULL path members indicating a gap in the history. So
+ MATCHING_SEGMENT should never be NULL, but clearly sometimes it is,
+ see http://svn.haxx.se/dev/archive-2013-06/0522.shtml
+ So to be safe we handle that case. */
+ if (matching_segment == NULL)
+ continue;
/* A segment with a NULL path means there is gap in the history.
We'll just proceed and let svn_ra_get_log2 fail with a useful
@@ -850,13 +860,32 @@ svn_client_log5(const apr_array_header_t
SVN_ERR(svn_client__ensure_ra_session_url(&old_session_url, ra_session,
actual_loc->url, pool));
- /* Get the svn_location_segment_t's representing the requested log ranges. */
- SVN_ERR(svn_client__repos_location_segments(&log_segments, ra_session,
- actual_loc->url,
- actual_loc->rev, /* peg */
- actual_loc->rev, /* start */
- oldest_rev, /* end */
- ctx, pool));
+ /* Save us an RA layer round trip if we are on the repository root and
+ know the result in advance. All the revision data has already been
+ validated.
+ */
+ if (strcmp(actual_loc->url, actual_loc->repos_root_url) == 0)
+ {
+ svn_location_segment_t *segment = apr_pcalloc(pool, sizeof(*segment));
+ log_segments = apr_array_make(pool, 1, sizeof(segment));
+
+ segment->range_start = oldest_rev;
+ segment->range_end = actual_loc->rev;
+ segment->path = "";
+ APR_ARRAY_PUSH(log_segments, svn_location_segment_t *) = segment;
+ }
+ else
+ {
+ /* Get the svn_location_segment_t's representing the requested log
+ * ranges. */
+ SVN_ERR(svn_client__repos_location_segments(&log_segments, ra_session,
+ actual_loc->url,
+ actual_loc->rev, /* peg */
+ actual_loc->rev, /* start */
+ oldest_rev, /* end */
+ ctx, pool));
+ }
+
SVN_ERR(run_ra_get_log(revision_ranges, relative_targets, log_segments,
actual_loc, ra_session, targets, limit,
Modified: subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/merge.c?rev=1500370&r1=1500369&r2=1500370&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/libsvn_client/merge.c Sun Jul 7 05:06:50 2013
@@ -12029,16 +12029,17 @@ operative_rev_receiver(void *baton,
return svn_error_create(SVN_ERR_CEASE_INVOCATION, NULL, NULL);
}
-/* Wrapper around svn_client_mergeinfo_log2. All arguments are as per
- that API. The discover_changed_paths, depth, and revprops args to
- svn_client_mergeinfo_log2 are always TRUE, svn_depth_infinity_t,
- and NULL respectively.
+/* Wrapper around svn_client__mergeinfo_log. All arguments are as per
+ that private API. The discover_changed_paths, depth, and revprops args to
+ svn_client__mergeinfo_log are always TRUE, svn_depth_infinity_t,
+ and empty array respectively.
If RECEIVER raises a SVN_ERR_CEASE_INVOCATION error, but still sets
*REVISION to a valid revnum, then clear the error. Otherwise return
any error. */
static svn_error_t*
-short_circuit_mergeinfo_log(svn_boolean_t finding_merged,
+short_circuit_mergeinfo_log(svn_mergeinfo_catalog_t *target_mergeinfo_cat,
+ svn_boolean_t finding_merged,
const char *target_path_or_url,
const svn_opt_revision_t *target_peg_revision,
const char *source_path_or_url,
@@ -12048,18 +12049,25 @@ short_circuit_mergeinfo_log(svn_boolean_
svn_log_entry_receiver_t receiver,
svn_revnum_t *revision,
svn_client_ctx_t *ctx,
+ apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
- svn_error_t *err = svn_client_mergeinfo_log2(finding_merged,
- target_path_or_url,
- target_peg_revision,
- source_path_or_url,
- source_peg_revision,
- source_start_revision,
- source_end_revision,
- receiver, revision,
- TRUE, svn_depth_infinity,
- NULL, ctx, scratch_pool);
+ apr_array_header_t *revprops;
+ svn_error_t *err;
+
+ revprops = apr_array_make(scratch_pool, 0, sizeof(const char *));
+ err = svn_client__mergeinfo_log(finding_merged,
+ target_path_or_url,
+ target_peg_revision,
+ target_mergeinfo_cat,
+ source_path_or_url,
+ source_peg_revision,
+ source_start_revision,
+ source_end_revision,
+ receiver, revision,
+ TRUE, svn_depth_infinity,
+ revprops, ctx, result_pool,
+ scratch_pool);
if (err)
{
@@ -12129,6 +12137,7 @@ find_last_merged_location(svn_client__pa
svn_opt_revision_t source_peg_rev, source_start_rev, source_end_rev,
target_opt_rev;
svn_revnum_t youngest_merged_rev = SVN_INVALID_REVNUM;
+ svn_mergeinfo_catalog_t target_mergeinfo_cat = NULL;
source_peg_rev.kind = svn_opt_revision_number;
source_peg_rev.value.number = source_branch->tip->rev;
@@ -12141,14 +12150,15 @@ find_last_merged_location(svn_client__pa
/* Find the youngest revision fully merged from SOURCE_BRANCH to TARGET,
if such a revision exists. */
- SVN_ERR(short_circuit_mergeinfo_log(TRUE, /* Find merged */
+ SVN_ERR(short_circuit_mergeinfo_log(&target_mergeinfo_cat,
+ TRUE, /* Find merged */
target->url, &target_opt_rev,
source_branch->tip->url,
&source_peg_rev,
&source_end_rev, &source_start_rev,
operative_rev_receiver,
&youngest_merged_rev,
- ctx, scratch_pool));
+ ctx, result_pool, scratch_pool));
if (!SVN_IS_VALID_REVNUM(youngest_merged_rev))
{
@@ -12175,14 +12185,15 @@ find_last_merged_location(svn_client__pa
(i.e. finding the youngest revision after the YCA where all revs have
been merged) that doesn't matter. */
source_end_rev.value.number = youngest_merged_rev;
- SVN_ERR(short_circuit_mergeinfo_log(FALSE, /* Find eligible */
+ SVN_ERR(short_circuit_mergeinfo_log(&target_mergeinfo_cat,
+ FALSE, /* Find eligible */
target->url, &target_opt_rev,
source_branch->tip->url,
&source_peg_rev,
&source_start_rev, &source_end_rev,
operative_rev_receiver,
&oldest_eligible_rev,
- ctx, scratch_pool));
+ ctx, scratch_pool, scratch_pool));
/* If there are revisions eligible for merging, use the oldest one
to calculate the base. Otherwise there are no operative revisions
@@ -12298,9 +12309,13 @@ find_automatic_merge(svn_client__pathrev
&s_t->target->loc, SVN_INVALID_REVNUM, SVN_INVALID_REVNUM,
s_t->target_ra_session, ctx, scratch_pool));
- SVN_ERR(svn_client__get_youngest_common_ancestor(
- &s_t->yca, s_t->source, &s_t->target->loc, s_t->source_ra_session,
- ctx, result_pool, result_pool));
+ SVN_ERR(svn_client__calc_youngest_common_ancestor(
+ &s_t->yca, s_t->source, s_t->source_branch.history,
+ s_t->source_branch.has_r0_history,
+ &s_t->target->loc, s_t->target_branch.history,
+ s_t->target_branch.has_r0_history,
+ result_pool, scratch_pool));
+
if (! s_t->yca)
return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL,
_("'%s@%ld' must be ancestrally related to "
Re: Question on mergeinfo added in r1500370 Re: svn commit: r1500370
[1/5]
Posted by Branko Čibej <br...@wandisco.com>.
On 07.07.2013 15:46, Daniel Shahaf wrote:
> On Sun, Jul 07, 2013 at 05:06:51AM -0000, brane@apache.org wrote:
>> Author: brane
>> Date: Sun Jul 7 05:06:50 2013
>> New Revision: 1500370
>>
>> URL: http://svn.apache.org/r1500370
>> Log:
>> On the javahl-1.8-extensions branch: Sync JavaHL with trunk up to r1500364.
>> Sync with branches/1.8.x up to r1500366.
>>
>> Propchange: subversion/branches/javahl-1.8-extensions/
>> ------------------------------------------------------------------------------
>> Merged /subversion/branches/1.8.x:r1494631-1500366
>> Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,1491432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,1494223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,1495446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,1497551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226
> Why does the output show one contiguous range for 1.8.x, but a series of
> cherry-picks for trunk?
Because changes from trunk were cherry-picked to 1.8.x, and I make a
wholesale sync from 1.8.x to the JavaHL extensions branch. The trunk
mergeinfo is inherited from the 1.8.x branch.
-- Brane
--
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com
Re: Question on mergeinfo added in r1500370 Re: svn commit: r1500370
[1/5]
Posted by Branko Čibej <br...@wandisco.com>.
On 07.07.2013 15:46, Daniel Shahaf wrote:
> On Sun, Jul 07, 2013 at 05:06:51AM -0000, brane@apache.org wrote:
>> Author: brane
>> Date: Sun Jul 7 05:06:50 2013
>> New Revision: 1500370
>>
>> URL: http://svn.apache.org/r1500370
>> Log:
>> On the javahl-1.8-extensions branch: Sync JavaHL with trunk up to r1500364.
>> Sync with branches/1.8.x up to r1500366.
>>
>> Propchange: subversion/branches/javahl-1.8-extensions/
>> ------------------------------------------------------------------------------
>> Merged /subversion/branches/1.8.x:r1494631-1500366
>> Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,1491432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,1494223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,1495446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,1497551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226
> Why does the output show one contiguous range for 1.8.x, but a series of
> cherry-picks for trunk?
Because changes from trunk were cherry-picked to 1.8.x, and I make a
wholesale sync from 1.8.x to the JavaHL extensions branch. The trunk
mergeinfo is inherited from the 1.8.x branch.
-- Brane
--
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com
Question on mergeinfo added in r1500370 Re: svn commit: r1500370
[1/5]
Posted by Daniel Shahaf <da...@apache.org>.
On Sun, Jul 07, 2013 at 05:06:51AM -0000, brane@apache.org wrote:
> Author: brane
> Date: Sun Jul 7 05:06:50 2013
> New Revision: 1500370
>
> URL: http://svn.apache.org/r1500370
> Log:
> On the javahl-1.8-extensions branch: Sync JavaHL with trunk up to r1500364.
> Sync with branches/1.8.x up to r1500366.
>
> Propchange: subversion/branches/javahl-1.8-extensions/
> ------------------------------------------------------------------------------
> Merged /subversion/branches/1.8.x:r1494631-1500366
> Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,1491432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,1494223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,1495446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,1497551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226
Why does the output show one contiguous range for 1.8.x, but a series of
cherry-picks for trunk?
Before anyone asks, it's not a mailer bug; svn shows the same:
% svn di -c 1500370 ^/subversion/branches/javahl-1.8-extensions/ --depth empty
Index: .
===================================================================
--- . (revision 1500369)
+++ . (revision 1500370)
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Merged /subversion/branches/1.8.x:r1494631-1500366
Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,149
1432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,149
4223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,149
5446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,149
7551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226
Question on mergeinfo added in r1500370 Re: svn commit: r1500370
[1/5]
Posted by Daniel Shahaf <da...@apache.org>.
On Sun, Jul 07, 2013 at 05:06:51AM -0000, brane@apache.org wrote:
> Author: brane
> Date: Sun Jul 7 05:06:50 2013
> New Revision: 1500370
>
> URL: http://svn.apache.org/r1500370
> Log:
> On the javahl-1.8-extensions branch: Sync JavaHL with trunk up to r1500364.
> Sync with branches/1.8.x up to r1500366.
>
> Propchange: subversion/branches/javahl-1.8-extensions/
> ------------------------------------------------------------------------------
> Merged /subversion/branches/1.8.x:r1494631-1500366
> Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,1491432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,1494223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,1495446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,1497551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226
Why does the output show one contiguous range for 1.8.x, but a series of
cherry-picks for trunk?
Before anyone asks, it's not a mailer bug; svn shows the same:
% svn di -c 1500370 ^/subversion/branches/javahl-1.8-extensions/ --depth empty
Index: .
===================================================================
--- . (revision 1500369)
+++ . (revision 1500370)
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Merged /subversion/branches/1.8.x:r1494631-1500366
Merged /subversion/trunk:r1478987,1480080,1481772,1481847,1489339,1490684,149
1432,1491707,1492020,1492148,1492264,1493424,1493475,1493703,1493720,1494171,149
4223,1494287,1494298,1494318,1494342,1494913,1494967,1495104,1495428,1495432,149
5446,1495850,1496110,1496132,1496151,1496938,1496957,1497002,1497318-1497319,149
7551,1497804,1498136,1498456,1498550,1498564,1499095-1499096,1499727,1500226