Author: stefan2
Date: Tue Nov 15 13:18:47 2016
New Revision: 1769826
URL: http://svn.apache.org/viewvc?rev=1769826&view=rev
Log: (empty)
Added:
subversion/branches/pristineless-hack/ (props changed)
- copied from r1769320, subversion/trunk/
Modified:
subversion/branches/pristineless-hack/subversion/include/private/svn_wc_private.h
subversion/branches/pristineless-hack/subversion/include/svn_error_codes.h
subversion/branches/pristineless-hack/subversion/include/svn_wc.h
subversion/branches/pristineless-hack/subversion/libsvn_client/blame.c
subversion/branches/pristineless-hack/subversion/libsvn_client/cat.c
subversion/branches/pristineless-hack/subversion/libsvn_client/client.h
subversion/branches/pristineless-hack/subversion/libsvn_client/conflicts.c
subversion/branches/pristineless-hack/subversion/libsvn_client/diff.c
subversion/branches/pristineless-hack/subversion/libsvn_client/externals.c
subversion/branches/pristineless-hack/subversion/libsvn_client/revert.c
subversion/branches/pristineless-hack/subversion/libsvn_client/status.c
subversion/branches/pristineless-hack/subversion/libsvn_client/switch.c
subversion/branches/pristineless-hack/subversion/libsvn_client/update.c
subversion/branches/pristineless-hack/subversion/libsvn_client/util.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/adm_crawler.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/copy.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/deprecated.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/diff.h
subversion/branches/pristineless-hack/subversion/libsvn_wc/diff_editor.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/diff_local.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/externals.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/questions.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/revert.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/update_editor.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/util.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/wc.h
subversion/branches/pristineless-hack/subversion/libsvn_wc/wc_db.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/wc_db.h
subversion/branches/pristineless-hack/subversion/libsvn_wc/wc_db_pristine.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/wc_db_private.h
subversion/branches/pristineless-hack/subversion/libsvn_wc/wc_db_wcroot.c
subversion/branches/pristineless-hack/subversion/libsvn_wc/workqueue.c
subversion/branches/pristineless-hack/subversion/svn/resolve-cmd.c
subversion/branches/pristineless-hack/subversion/tests/cmdline/basic_tests.py
subversion/branches/pristineless-hack/subversion/tests/cmdline/diff_tests.py
subversion/branches/pristineless-hack/subversion/tests/cmdline/move_tests.py
subversion/branches/pristineless-hack/subversion/tests/cmdline/trans_tests.py
subversion/branches/pristineless-hack/subversion/tests/cmdline/upgrade_tests.py
subversion/branches/pristineless-hack/subversion/tests/libsvn_wc/pristine-store-test.c
subversion/branches/pristineless-hack/subversion/tests/libsvn_wc/utils.c
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Tue Nov 15 13:18:47 2016
@@ -0,0 +1,2 @@
+([Ii]ssues?:?(\s*(,|and)?\s*[#]?\d+)+)|(\bSVN-(\d+)\b)
+(\d+)
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
bugtraq:url = http://subversion.apache.org/issue%BUGID%
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
--- svn:auto-props (added)
+++ svn:auto-props Tue Nov 15 13:18:47 2016
@@ -0,0 +1,13 @@
+*.c = svn:eol-style=native
+*.cpp = svn:eol-style=native
+*.h = svn:eol-style=native
+*.hpp = svn:eol-style=native
+*.java = svn:eol-style=native
+*.py = svn:eol-style=native
+*.pl = svn:eol-style=native
+*.rb = svn:eol-style=native
+*.sql = svn:eol-style=native
+*.txt = svn:eol-style=native
+README = svn:eol-style=native
+BRANCH-README = svn:eol-style=native
+STATUS = svn:eol-style=native
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Nov 15 13:18:47 2016
@@ -0,0 +1,54 @@
+ChangeLog*
+Makefile
+config.cache
+config.log
+config.nice
+config.status
+configure
+libtool
+.gdb_history
+.swig_checked
+*.orig
+*.rej
+TAGS
+tags
+neon
+build-outputs.mk
+autogen-standalone.mk
+autom4te.cache
+gen-make.opts
+tests.log*
+fails.log*
+db4-win32
+db
+*.o
+*~
+.*~
+apr
+apr-util
+apr-iconv
+Release
+Debug
+ipch
+subversion_msvc.dsw
+subversion_msvc.ncb
+subversion_msvc.opt
+subversion_msvc.plg
+subversion_vcnet.*
+mkmf.log
+.project
+.classpath
+.cdtproject
+.settings
+.cproject
+zlib
+sqlite-amalgamation
+serf
+googlemock
+.git
+.gitignore
+.idea
+compile_commands.json
+.kdev4
+*.kdev4
+.vs
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Nov 15 13:18:47 2016
@@ -0,0 +1,99 @@
+/subversion/branches/1.10-cache-improvements:1669168-1694487
+/subversion/branches/1.5.x-r30215:870312
+/subversion/branches/1.7.x-fs-verify:1146708,1161180
+/subversion/branches/1.9-cache-improvements:1678948-1679863
+/subversion/branches/1.9.x:1735680
+/subversion/branches/10Gb: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:965046-1000689
+/subversion/branches/authzperf:1615360
+/subversion/branches/auto-props-sdc:1384106-1401643
+/subversion/branches/bdb-reverse-deltas:872050-872529
+/subversion/branches/cache-server:1458643-1476567
+/subversion/branches/diff-callbacks3:870059-870761
+/subversion/branches/diff-optimizations:1031270-1037352
+/subversion/branches/diff-optimizations-bytes:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default:870728-871118
+/subversion/branches/double-delete:870511-872970
+/subversion/branches/dump-load-cross-check:1654853-1657295
+/subversion/branches/ev2-export:1325914,1332738,1413107
+/subversion/branches/explore-wc: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:871779-873302
+/subversion/branches/fs-rep-sharing:869036-873803
+/subversion/branches/fsfs-format7:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029,1498103,1498155,1500054,1507729-1507731,1507735-1507736
+/subversion/branches/fsfs-improvements:1499981-1547039
+/subversion/branches/fsfs-lock-many:1571740-1577217
+/subversion/branches/fsfs-pack:873717-874575
+/subversion/branches/fsx:1507845-1509914
+/subversion/branches/fsx-1.10:1658219-1694500
+/subversion/branches/fsx-id:1645603-1649011
+/subversion/branches/gnome-keyring:870558-871410
+/subversion/branches/gpg-agent-password-store:1005036-1150766
+/subversion/branches/gtest_addition:1452117-1502138
+/subversion/branches/http-protocol-v2:874395-876041
+/subversion/branches/in-memory-cache:869829-871452
+/subversion/branches/in-repo-authz:1414342-1424779
+/subversion/branches/inheritable-props:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization:1068724-1068739
+/subversion/branches/integrate-cache-membuffer:998649-998852
+/subversion/branches/integrate-compression-level:1068651-1072287
+/subversion/branches/integrate-io-improvements:1068684-1072297
+/subversion/branches/integrate-is-cachable:1072568-1074082
+/subversion/branches/integrate-partial-getter:1072558-1076552
+/subversion/branches/integrate-readline-speedup:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions:1068695-1072516
+/subversion/branches/integrate-string-improvements:1068251-1190617
+/subversion/branches/integrate-txdelta-caching:1072541-1078213
+/subversion/branches/issue-2779-dev:965496-984198
+/subversion/branches/issue-2843-dev:871432-874179
+/subversion/branches/issue-3000:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees:873375-874084
+/subversion/branches/issue-3148-dev:875193-875204
+/subversion/branches/issue-3220-dev:872210-872226
+/subversion/branches/issue-3242-dev:879653-896436
+/subversion/branches/issue-3334-dirs:875156-875867
+/subversion/branches/issue-3975:1152931-1160746
+/subversion/branches/issue-4116-dev:1424719-1425040
+/subversion/branches/issue-4194-dev:1410507-1414880
+/subversion/branches/javahl-ra:991978-1494640
+/subversion/branches/kwallet:870785-871314
+/subversion/branches/log-addressing:1509279-1546844
+/subversion/branches/log-g-performance:870941-871032
+/subversion/branches/merge-skips-obstructions:874525-874615
+/subversion/branches/move-tracking-2:1606692-1714632
+/subversion/branches/multi-layer-moves:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client:870276,870376
+/subversion/branches/node_pool:1304828-1305388
+/subversion/branches/patch-exec:1692717-1705390
+/subversion/branches/performance: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-1029340,1029342,10
29344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/pin-externals:1643757-1659392
+/subversion/branches/py-tests-as-modules:956579-1033052
+/subversion/branches/ra-svn-tuning:1658201-1694489
+/subversion/branches/ra_serf-digest-authn:875693-876404
+/subversion/branches/reintegrate-improvements:873853-874164
+/subversion/branches/remote-only-status:1581845-1586090
+/subversion/branches/resolve-incoming-add:1762797-1764284
+/subversion/branches/revprop-cache:1298521-1326293
+/subversion/branches/revprop-caching-ng:1620597,1620599
+/subversion/branches/revprop-packing:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo:876734-878766
+/subversion/branches/svn-auth-x509:1603509-1655900
+/subversion/branches/svn-info-detail:1660035-1662618
+/subversion/branches/svn-mergeinfo-enhancements:870119-870195,870197-870288
+/subversion/branches/svn-mergeinfo-normalizer:1642232-1695991
+/subversion/branches/svn-patch-improvements:918519-934609
+/subversion/branches/svn_mutex:1141683-1182099
+/subversion/branches/svnpatch-diff:865738-876477
+/subversion/branches/svnraisetc:874709-875149
+/subversion/branches/svnserve-logging:869828-870893
+/subversion/branches/tc-issue-3334:874697-874773
+/subversion/branches/tc-merge-notify:874017-874062
+/subversion/branches/tc-resolve:874191-874239
+/subversion/branches/tc_url_rev:874351-874483
+/subversion/branches/tree-conflicts:868291-873154
+/subversion/branches/tree-conflicts-notify:873926-874008
+/subversion/branches/tristate-chunked-request:1502394-1502681
+/subversion/branches/tweak-build-take-two:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls:1060426-1064427
+/subversion/branches/verify-at-commit:1462039-1462408
+/subversion/branches/verify-keep-going:1439280-1546110
+/subversion/branches/wc-collate-path:1402685-1480384
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
tsvn:logwidthmarker = 78
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
tsvn:projectlanguage = 1033
Propchange: subversion/branches/pristineless-hack/
------------------------------------------------------------------------------
webviewer:revision = http://svn.apache.org/r%REVISION%
Modified:
subversion/branches/pristineless-hack/subversion/include/private/svn_wc_private.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/include/private/svn_wc_private.h?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
---
subversion/branches/pristineless-hack/subversion/include/private/svn_wc_private.h
(original)
+++
subversion/branches/pristineless-hack/subversion/include/private/svn_wc_private.h
Tue Nov 15 13:18:47 2016
@@ -45,7 +45,6 @@
extern "C" {
#endif /* __cplusplus */
-
/* Return TRUE iff CLHASH (a hash whose keys are const char *
changelist names) is NULL or if LOCAL_ABSPATH is part of a changelist in
CLHASH. */
@@ -84,6 +83,8 @@ svn_wc__get_file_external_editor(const s
const svn_opt_revision_t *recorded_rev,
svn_wc_conflict_resolver_func2_t
conflict_func,
void *conflict_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -100,6 +101,8 @@ svn_wc__crawl_file_external(svn_wc_conte
void *report_baton,
svn_boolean_t restore_files,
svn_boolean_t use_commit_times,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -1364,7 +1367,6 @@ svn_wc__get_status_editor(const svn_delt
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
-
/**
* Set @a *editor and @a *edit_baton to an editor and baton for updating a
* working copy.
@@ -1476,6 +1478,8 @@ svn_wc__get_update_editor(const svn_delt
void *conflict_baton,
svn_wc_external_update_t external_func,
void *external_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -1518,6 +1522,8 @@ svn_wc__get_switch_editor(const svn_delt
void *conflict_baton,
svn_wc_external_update_t external_func,
void *external_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -1622,6 +1628,8 @@ svn_wc__get_diff_editor(const svn_delta_
svn_boolean_t server_performs_filtering,
const apr_array_header_t *changelist_filter,
const svn_diff_tree_processor_t *diff_processor,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *result_pool,
@@ -2033,6 +2041,8 @@ svn_wc__diff7(const char **root_relpath,
svn_boolean_t ignore_ancestry,
const apr_array_header_t *changelist_filter,
const svn_diff_tree_processor_t *diff_processor,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *result_pool,
Modified:
subversion/branches/pristineless-hack/subversion/include/svn_error_codes.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/include/svn_error_codes.h?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/include/svn_error_codes.h
(original)
+++ subversion/branches/pristineless-hack/subversion/include/svn_error_codes.h
Tue Nov 15 13:18:47 2016
@@ -571,6 +571,11 @@ SVN_ERROR_START
SVN_ERR_WC_CATEGORY_START + 41,
"Duplicate targets in svn:externals property")
+ /** @since New in 1.10 */
+ SVN_ERRDEF(SVN_ERR_WC_NO_PRISTINE,
+ SVN_ERR_WC_CATEGORY_START + 42,
+ "Pristine not available")
+
/* fs errors */
SVN_ERRDEF(SVN_ERR_FS_GENERAL,
Modified: subversion/branches/pristineless-hack/subversion/include/svn_wc.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/include/svn_wc.h?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/include/svn_wc.h (original)
+++ subversion/branches/pristineless-hack/subversion/include/svn_wc.h Tue Nov
15 13:18:47 2016
@@ -5457,6 +5457,13 @@ svn_wc_process_committed(const char *pat
+typedef svn_error_t * (*rev_file_func_t)(svn_stream_t **content,
+ const char *repo_path,
+ svn_revnum_t revision,
+ void *baton,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
/**
* Do a depth-first crawl in a working copy, beginning at @a local_abspath,
* using @a wc_ctx for accessing the working copy.
@@ -5526,6 +5533,8 @@ svn_wc_crawl_revisions5(svn_wc_context_t
svn_boolean_t honor_depth_exclude,
svn_boolean_t depth_compatibility_trick,
svn_boolean_t use_commit_times,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -7578,6 +7587,7 @@ svn_wc_relocate(const char *path,
apr_pool_t *pool);
+
/**
* Revert changes to @a local_abspath. Perform necessary allocations in
* @a scratch_pool.
@@ -7632,6 +7642,8 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
const apr_array_header_t *changelist_filter,
svn_boolean_t clear_changelists,
svn_boolean_t metadata_only,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -7733,6 +7745,8 @@ svn_error_t *
svn_wc_restore(svn_wc_context_t *wc_ctx,
const char *local_abspath,
svn_boolean_t use_commit_times,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
apr_pool_t *scratch_pool);
Modified: subversion/branches/pristineless-hack/subversion/libsvn_client/blame.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/blame.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/blame.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/blame.c Tue
Nov 15 13:18:47 2016
@@ -858,6 +858,7 @@ svn_client_blame5(const char *target,
SVN_ERR(svn_client__get_normalized_stream(&wcfile, ctx->wc_ctx,
target_abspath_or_url,
&rev,
FALSE, normalize_eols,
+ NULL, NULL,
ctx->cancel_func,
ctx->cancel_baton,
pool, pool));
Modified: subversion/branches/pristineless-hack/subversion/libsvn_client/cat.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/cat.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/cat.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/cat.c Tue
Nov 15 13:18:47 2016
@@ -44,6 +44,33 @@
/*** Code. ***/
+/* A baton for wc_info_receiver(), containing the wrapped receiver. */
+typedef struct wc_info_receiver_baton_t
+{
+ const char *repos_relpath;
+ svn_revnum_t revision;
+
+ apr_pool_t *pool;
+} wc_info_receiver_baton_t;
+
+/* A receiver for WC info, implementing svn_client_info_receiver2_t.
+ * Convert the WC info to client info and pass it to the client info
+ * receiver (BATON->client_receiver_func with BATON->client_receiver_baton). */
+static svn_error_t *
+wc_info_receiver(void *baton,
+ const char *abspath_or_url,
+ const svn_wc__info2_t *wc_info,
+ apr_pool_t *scratch_pool)
+{
+ wc_info_receiver_baton_t *b = baton;
+ const char *relpath = svn_dirent_skip_ancestor(wc_info->repos_root_URL,
+ wc_info->URL);
+
+ b->repos_relpath = apr_pstrdup(b->pool, relpath);
+ b->revision = wc_info->rev;
+
+ return SVN_NO_ERROR;
+}
svn_error_t *
svn_client__get_normalized_stream(svn_stream_t **normal_stream,
@@ -52,6 +79,8 @@ svn_client__get_normalized_stream(svn_st
const svn_opt_revision_t *revision,
svn_boolean_t expand_keywords,
svn_boolean_t normalize_eols,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *result_pool,
@@ -85,8 +114,25 @@ svn_client__get_normalized_stream(svn_st
if (revision->kind != svn_opt_revision_working)
{
- SVN_ERR(svn_wc_get_pristine_contents2(&input, wc_ctx, local_abspath,
- result_pool, scratch_pool));
+ svn_error_t *err;
+ err = svn_wc_get_pristine_contents2(&input, wc_ctx, local_abspath,
+ result_pool, scratch_pool);
+ if (err && err->apr_err == SVN_ERR_WC_NO_PRISTINE && rev_file_func)
+ {
+ wc_info_receiver_baton_t b;
+
+ b.pool = scratch_pool;
+ svn_error_clear(err);
+
+ SVN_ERR(svn_wc__get_info(wc_ctx, local_abspath, svn_depth_empty,
+ FALSE, TRUE, NULL, wc_info_receiver, &b,
+ NULL, NULL, scratch_pool));
+ err = rev_file_func(&input, b.repos_relpath, b.revision,
+ rev_file_baton, result_pool, scratch_pool);
+ }
+
+ SVN_ERR(err);
+
if (input == NULL)
return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
_("'%s' has no pristine version until it is committed"),
@@ -213,12 +259,20 @@ svn_client_cat3(apr_hash_t **returned_pr
{
const char *local_abspath;
svn_stream_t *normal_stream;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
+ const char *repo_root;
SVN_ERR(svn_dirent_get_absolute(&local_abspath, path_or_url,
scratch_pool));
+ SVN_ERR(svn_client_get_repos_root(&repo_root, NULL, local_abspath, ctx,
+ scratch_pool, scratch_pool));
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, repo_root, scratch_pool));
SVN_ERR(svn_client__get_normalized_stream(&normal_stream, ctx->wc_ctx,
local_abspath, revision,
expand_keywords, FALSE,
+ rev_file_func, rev_file_baton,
ctx->cancel_func,
ctx->cancel_baton,
scratch_pool, scratch_pool));
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/client.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/client.h?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/client.h
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/client.h Tue
Nov 15 13:18:47 2016
@@ -40,6 +40,7 @@
#include "private/svn_client_private.h"
#include "private/svn_diff_tree.h"
#include "private/svn_editor.h"
+#include "private/svn_wc_private.h"
#ifdef __cplusplus
extern "C" {
@@ -1086,6 +1087,8 @@ svn_client__get_normalized_stream(svn_st
const svn_opt_revision_t *revision,
svn_boolean_t expand_keywords,
svn_boolean_t normalize_eols,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *result_pool,
@@ -1097,6 +1100,13 @@ svn_client__get_shim_callbacks(svn_wc_co
apr_hash_t *relpath_map,
apr_pool_t *result_pool);
+svn_error_t *
+svn_client__get_rev_file_func(rev_file_func_t *rev_file_func,
+ void **rev_file_baton,
+ svn_client_ctx_t *ctx,
+ const char *repos_root_url,
+ apr_pool_t *result_pool);
+
/* Return REVISION unless its kind is 'unspecified' in which case return
* a pointer to a statically allocated revision structure of kind 'head'
* if PATH_OR_URL is a URL or 'base' if it is a WC path. */
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/conflicts.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/conflicts.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/conflicts.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/conflicts.c
Tue Nov 15 13:18:47 2016
@@ -7099,10 +7099,16 @@ resolve_incoming_move_dir_merge(svn_clie
{
const char *move_target_url;
svn_opt_revision_t incoming_new_opt_rev;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
/* Revert the incoming move target directory. */
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, repos_root_url,
+ scratch_pool));
SVN_ERR(svn_wc_revert5(ctx->wc_ctx, moved_to_abspath, svn_depth_infinity,
FALSE, NULL, TRUE, FALSE,
+ rev_file_func, rev_file_baton,
NULL, NULL, /* no cancellation */
ctx->notify_func2, ctx->notify_baton2,
scratch_pool));
Modified: subversion/branches/pristineless-hack/subversion/libsvn_client/diff.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/diff.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/diff.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/diff.c Tue
Nov 15 13:18:47 2016
@@ -1811,6 +1811,9 @@ diff_wc_wc(const char **root_relpath,
apr_pool_t *scratch_pool)
{
const char *abspath1;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
+ svn_wc_status3_t *status;
SVN_ERR_ASSERT(! svn_path_is_url(path1));
SVN_ERR_ASSERT(! svn_path_is_url(path2));
@@ -1841,10 +1844,18 @@ diff_wc_wc(const char **root_relpath,
ddi->anchor = path1;
}
+ /* Repository access callback for pristine-less working copies. */
+ SVN_ERR(svn_wc_status3(&status, ctx->wc_ctx, abspath1,
+ scratch_pool, scratch_pool));
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, status->repos_root_url,
+ scratch_pool));
+
SVN_ERR(svn_wc__diff7(root_relpath, root_is_dir,
ctx->wc_ctx, abspath1, depth,
ignore_ancestry, changelists,
diff_processor,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
result_pool, scratch_pool));
return SVN_NO_ERROR;
@@ -2067,6 +2078,9 @@ diff_repos_wc(const char **root_relpath,
const char *copy_root_abspath;
const char *target_url;
svn_client__pathrev_t *loc1;
+ const char *repos_root_url;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
SVN_ERR_ASSERT(! svn_path_is_url(path2));
@@ -2185,11 +2199,10 @@ diff_repos_wc(const char **root_relpath,
}
SVN_ERR(svn_ra_reparent(ra_session, anchor_url, scratch_pool));
+ SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root_url, scratch_pool));
if (ddi)
{
- const char *repos_root_url;
-
ddi->anchor = anchor;
if (!reverse)
@@ -2205,9 +2218,6 @@ diff_repos_wc(const char **root_relpath,
ddi->orig_path_2 = apr_pstrdup(result_pool, loc1->url);
}
- SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root_url,
- scratch_pool));
-
ddi->session_relpath = svn_uri_skip_ancestor(repos_root_url,
anchor_url,
result_pool);
@@ -2217,6 +2227,10 @@ diff_repos_wc(const char **root_relpath,
diff_processor = svn_diff__tree_processor_reverse_create(
diff_processor, NULL, scratch_pool);
+ /* Repository access callback for pristine-less working copies. */
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, repos_root_url, scratch_pool));
+
/* Use the diff editor to generate the diff. */
SVN_ERR(svn_ra_has_capability(ra_session, &server_supports_depth,
SVN_RA_CAPABILITY_DEPTH, scratch_pool));
@@ -2231,6 +2245,7 @@ diff_repos_wc(const char **root_relpath,
server_supports_depth,
changelists,
diff_processor,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
scratch_pool, scratch_pool));
@@ -2283,6 +2298,7 @@ diff_repos_wc(const char **root_relpath,
FALSE, depth, TRUE,
(! server_supports_depth),
FALSE,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
NULL, NULL, /* notification is N/A */
scratch_pool));
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/externals.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/externals.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/externals.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/externals.c
Tue Nov 15 13:18:47 2016
@@ -550,6 +550,8 @@ switch_file_external(const char *local_a
svn_revnum_t revnum;
apr_array_header_t *inherited_props;
const char *target = svn_dirent_basename(local_abspath, scratch_pool);
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
/* Get the external file's iprops. */
SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props, "",
@@ -560,6 +562,10 @@ switch_file_external(const char *local_a
svn_uri_dirname(switch_loc->url, scratch_pool),
scratch_pool));
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, switch_loc->repos_root_url,
+ scratch_pool));
+
SVN_ERR(svn_wc__get_file_external_editor(&switch_editor, &switch_baton,
&revnum, ctx->wc_ctx,
local_abspath,
@@ -576,6 +582,8 @@ switch_file_external(const char *local_a
record_revision,
ctx->conflict_func2,
ctx->conflict_baton2,
+ rev_file_func,
+ rev_file_baton,
ctx->cancel_func,
ctx->cancel_baton,
ctx->notify_func2,
@@ -595,6 +603,7 @@ switch_file_external(const char *local_a
SVN_ERR(svn_wc__crawl_file_external(ctx->wc_ctx, local_abspath,
reporter, report_baton,
TRUE, use_commit_times,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
ctx->notify_func2, ctx->notify_baton2,
scratch_pool));
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/revert.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/revert.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/revert.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/revert.c Tue
Nov 15 13:18:47 2016
@@ -52,6 +52,8 @@ struct revert_with_write_lock_baton {
svn_boolean_t clear_changelists;
svn_boolean_t metadata_only;
svn_client_ctx_t *ctx;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
};
/* (Note: All arguments are in the baton above.)
@@ -87,6 +89,7 @@ revert(void *baton, apr_pool_t *result_p
b->changelists,
b->clear_changelists,
b->metadata_only,
+ b->rev_file_func, b->rev_file_baton,
b->ctx->cancel_func, b->ctx->cancel_baton,
b->ctx->notify_func2, b->ctx->notify_baton2,
scratch_pool);
@@ -164,6 +167,7 @@ svn_client_revert3(const apr_array_heade
{
const char *path = APR_ARRAY_IDX(paths, i, const char *);
const char *local_abspath, *lock_target;
+ const char *repos_root_url;
svn_boolean_t wc_root;
svn_pool_clear(iterpool);
@@ -190,6 +194,16 @@ svn_client_revert3(const apr_array_heade
goto errorful;
lock_target = wc_root ? local_abspath
: svn_dirent_dirname(local_abspath, pool);
+ /* Repository access callback for pristine-less working copies. */
+ SVN_ERR(svn_wc__node_get_base(NULL, NULL, NULL, &repos_root_url,
+ NULL, NULL, ctx->wc_ctx, local_abspath,
+ TRUE /* ignore_enoent */,
+ iterpool, iterpool));
+ SVN_ERR(svn_client__get_rev_file_func(&baton.rev_file_func,
+ &baton.rev_file_baton,
+ ctx, repos_root_url,
+ iterpool));
+
err = svn_wc__call_with_write_lock(revert, &baton, ctx->wc_ctx,
lock_target, FALSE,
iterpool, iterpool);
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/status.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/status.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/status.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/status.c Tue
Nov 15 13:18:47 2016
@@ -517,6 +517,9 @@ svn_client_status6(svn_revnum_t *result_
svn_revnum_t revnum;
report_baton_t rb;
svn_depth_t status_depth;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
+ const char *repos_root_url;
if (revision->kind == svn_opt_revision_head)
{
@@ -556,6 +559,12 @@ svn_client_status6(svn_revnum_t *result_
else
rb.depth = depth;
+ /* Repository access callback for pristine-less working copies. */
+ SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root_url, pool));
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func,
+ &rev_file_baton,
+ ctx, repos_root_url, pool));
+
/* Drive the reporter structure, describing the revisions
within PATH. When we call reporter->finish_report,
EDITOR will be driven to describe differences between our
@@ -567,6 +576,7 @@ svn_client_status6(svn_revnum_t *result_
depth, (! depth_as_sticky),
(! server_supports_depth),
FALSE /* use_commit_times */,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
NULL, NULL, pool));
}
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/switch.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/switch.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/switch.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/switch.c Tue
Nov 15 13:18:47 2016
@@ -118,6 +118,8 @@ switch_internal(svn_revnum_t *result_rev
svn_config_t *cfg = ctx->config
? svn_hash_gets(ctx->config, SVN_CONFIG_CATEGORY_CONFIG)
: NULL;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
/* An unknown depth can't be sticky. */
if (depth == svn_depth_unknown)
@@ -297,6 +299,11 @@ switch_internal(svn_revnum_t *result_rev
SVN_ERR(svn_ra_reparent(ra_session, anchor_url, pool));
+ /* Repository access callback for pristine-less working copies. */
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, switch_loc->repos_root_url,
+ pool));
+
/* Fetch the switch (update) editor. If REVISION is invalid, that's
okay; the RA driver will call editor->set_target_revision() later on. */
SVN_ERR(svn_ra_has_capability(ra_session, &server_supports_depth,
@@ -317,6 +324,7 @@ switch_internal(svn_revnum_t *result_rev
conflicted_paths ? record_conflict : NULL,
conflicted_paths,
NULL, NULL,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
ctx->notify_func2, ctx->notify_baton2,
pool, pool));
@@ -345,6 +353,7 @@ switch_internal(svn_revnum_t *result_rev
depth, (! depth_is_sticky),
(! server_supports_depth),
use_commit_times,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
ctx->notify_func2, ctx->notify_baton2,
pool));
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_client/update.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/update.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/update.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/update.c Tue
Nov 15 13:18:47 2016
@@ -245,6 +245,8 @@ update_internal(svn_revnum_t *result_rev
svn_config_t *cfg = ctx->config
? svn_hash_gets(ctx->config, SVN_CONFIG_CATEGORY_CONFIG)
: NULL;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
if (result_rev)
*result_rev = SVN_INVALID_REVNUM;
@@ -460,6 +462,10 @@ update_internal(svn_revnum_t *result_rev
revnum, depth, ra_session,
ctx, scratch_pool, scratch_pool));
+ /* Repository access callback for pristine-less working copies. */
+ SVN_ERR(svn_client__get_rev_file_func(&rev_file_func, &rev_file_baton,
+ ctx, repos_root_url, scratch_pool));
+
/* Fetch the update editor. If REVISION is invalid, that's okay;
the RA driver will call editor->set_target_revision later on. */
SVN_ERR(svn_wc__get_update_editor(&update_editor, &update_edit_baton,
@@ -475,6 +481,7 @@ update_internal(svn_revnum_t *result_rev
conflicted_paths ? record_conflict : NULL,
conflicted_paths,
NULL, NULL,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
ctx->notify_func2, ctx->notify_baton2,
scratch_pool, scratch_pool));
@@ -503,6 +510,7 @@ update_internal(svn_revnum_t *result_rev
depth, (! depth_is_sticky),
(! server_supports_depth),
use_commit_times,
+ rev_file_func, rev_file_baton,
ctx->cancel_func, ctx->cancel_baton,
ctx->notify_func2, ctx->notify_baton2,
scratch_pool));
Modified: subversion/branches/pristineless-hack/subversion/libsvn_client/util.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_client/util.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_client/util.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_client/util.c Tue
Nov 15 13:18:47 2016
@@ -37,6 +37,7 @@
#include "private/svn_client_private.h"
#include "private/svn_wc_private.h"
#include "private/svn_fspath.h"
+#include "private/svn_subr_private.h"
#include "client.h"
@@ -468,3 +469,57 @@ svn_client__get_shim_callbacks(svn_wc_co
return callbacks;
}
+
+typedef struct auto_session_t
+{
+ svn_ra_session_t *ra_session;
+ svn_client_ctx_t *ctx;
+ const char *root_url;
+ apr_pool_t *pool;
+
+} auto_session_t;
+
+static svn_error_t *
+fetch_rev_file(svn_stream_t **content,
+ const char *repo_path,
+ svn_revnum_t revision,
+ void *baton,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ auto_session_t *session = baton;
+ *content = svn_stream_buffered(result_pool);
+
+ if (!session->ra_session)
+ SVN_ERR(svn_client__open_ra_session_internal(&session->ra_session, NULL,
+ session->root_url,
+ NULL, NULL,
+ FALSE /* write_dav_props */,
+ FALSE /* read_dav_props */,
+ session->ctx,
+ session->pool,
+ scratch_pool));
+
+ SVN_ERR(svn_ra_get_file(session->ra_session, repo_path, revision, *content,
+ NULL, NULL, result_pool));
+
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_client__get_rev_file_func(rev_file_func_t *rev_file_func,
+ void **rev_file_baton,
+ svn_client_ctx_t *ctx,
+ const char *repos_root_url,
+ apr_pool_t *result_pool)
+{
+ auto_session_t *baton = apr_pcalloc(result_pool, sizeof(*baton));
+ baton->ctx = ctx;
+ baton->root_url = repos_root_url;
+ baton->pool = result_pool;
+
+ *rev_file_func = fetch_rev_file;
+ *rev_file_baton = baton;
+
+ return SVN_NO_ERROR;
+}
\ No newline at end of file
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_wc/adm_crawler.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_wc/adm_crawler.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_wc/adm_crawler.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_wc/adm_crawler.c
Tue Nov 15 13:18:47 2016
@@ -69,12 +69,20 @@ restore_file(svn_wc__db_t *db,
const char *local_abspath,
svn_boolean_t use_commit_times,
svn_boolean_t mark_resolved_text_conflict,
+ const char *repos_relpath,
+ svn_revnum_t revision,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool)
{
svn_skel_t *work_item;
+ SVN_ERR(svn_wc__pristine_add(db, local_abspath, repos_relpath,
+ revision, rev_file_func,
+ rev_file_baton, scratch_pool));
+
SVN_ERR(svn_wc__wq_build_file_install(&work_item,
db, local_abspath,
NULL /* source_abspath */,
@@ -104,6 +112,8 @@ svn_error_t *
svn_wc_restore(svn_wc_context_t *wc_ctx,
const char *local_abspath,
svn_boolean_t use_commit_times,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
apr_pool_t *scratch_pool)
{
/* ### If ever revved: Add cancel func. */
@@ -111,6 +121,8 @@ svn_wc_restore(svn_wc_context_t *wc_ctx,
svn_node_kind_t kind;
svn_node_kind_t disk_kind;
const svn_checksum_t *checksum;
+ const char *repos_relpath;
+ svn_revnum_t revision;
SVN_ERR(svn_io_check_path(local_abspath, &disk_kind, scratch_pool));
@@ -120,10 +132,11 @@ svn_wc_restore(svn_wc_context_t *wc_ctx,
svn_dirent_local_style(local_abspath,
scratch_pool));
- SVN_ERR(svn_wc__db_read_info(&status, &kind, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, &checksum, NULL, NULL, NULL,
NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
+ SVN_ERR(svn_wc__db_read_info(&status, &kind, &revision, &repos_relpath,
+ NULL, NULL, NULL, NULL, NULL, NULL, &checksum,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL,
wc_ctx->db, local_abspath,
scratch_pool, scratch_pool));
@@ -143,6 +156,8 @@ svn_wc_restore(svn_wc_context_t *wc_ctx,
if (kind == svn_node_file || kind == svn_node_symlink)
SVN_ERR(restore_file(wc_ctx->db, local_abspath, use_commit_times,
FALSE /*mark_resolved_text_conflict*/,
+ repos_relpath, revision,
+ rev_file_func, rev_file_baton,
NULL, NULL /* cancel func, baton */,
scratch_pool));
else
@@ -164,6 +179,10 @@ restore_node(svn_wc__db_t *db,
svn_node_kind_t kind,
svn_boolean_t mark_resolved_text_conflict,
svn_boolean_t use_commit_times,
+ const char *repos_relpath,
+ svn_revnum_t revision,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -175,6 +194,8 @@ restore_node(svn_wc__db_t *db,
/* Recreate file from text-base; mark any text conflict as resolved */
SVN_ERR(restore_file(db, local_abspath, use_commit_times,
mark_resolved_text_conflict,
+ repos_relpath, revision,
+ rev_file_func, rev_file_baton,
cancel_func, cancel_baton,
scratch_pool));
}
@@ -256,6 +277,8 @@ report_revisions_and_depths(svn_wc__db_t
svn_boolean_t depth_compatibility_trick,
svn_boolean_t report_everything,
svn_boolean_t use_commit_times,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -386,8 +409,11 @@ report_revisions_and_depths(svn_wc__db_t
svn_node_kind_t wrk_kind;
const svn_checksum_t *checksum;
svn_boolean_t conflicted;
+ const char *repos_relpath;
+ svn_revnum_t revision;
- SVN_ERR(svn_wc__db_read_info(&wrk_status, &wrk_kind, NULL, NULL,
+ SVN_ERR(svn_wc__db_read_info(&wrk_status, &wrk_kind, &revision,
+ &repos_relpath,
NULL, NULL, NULL, NULL, NULL, NULL,
&checksum, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, &conflicted,
@@ -411,6 +437,8 @@ report_revisions_and_depths(svn_wc__db_t
{
SVN_ERR(restore_node(db, this_abspath, wrk_kind,
conflicted, use_commit_times,
+ repos_relpath, revision,
+ rev_file_func, rev_file_baton,
cancel_func, cancel_baton,
notify_func, notify_baton, iterpool));
}
@@ -611,6 +639,7 @@ report_revisions_and_depths(svn_wc__db_t
depth_compatibility_trick,
start_empty,
use_commit_times,
+ rev_file_func,
rev_file_baton,
cancel_func, cancel_baton,
notify_func, notify_baton,
iterpool));
@@ -639,6 +668,8 @@ svn_wc_crawl_revisions5(svn_wc_context_t
svn_boolean_t honor_depth_exclude,
svn_boolean_t depth_compatibility_trick,
svn_boolean_t use_commit_times,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -747,6 +778,8 @@ svn_wc_crawl_revisions5(svn_wc_context_t
{
SVN_ERR(restore_node(wc_ctx->db, local_abspath,
wrk_kind, conflicted, use_commit_times,
+ repos_relpath, target_rev,
+ rev_file_func, rev_file_baton,
cancel_func, cancel_baton,
notify_func, notify_baton,
scratch_pool));
@@ -786,6 +819,7 @@ svn_wc_crawl_revisions5(svn_wc_context_t
depth_compatibility_trick,
start_empty,
use_commit_times,
+ rev_file_func, rev_file_baton,
cancel_func, cancel_baton,
notify_func, notify_baton,
scratch_pool);
@@ -953,9 +987,20 @@ read_and_checksum_pristine_text(svn_stre
apr_pool_t *scratch_pool)
{
svn_stream_t *base_stream;
+ svn_error_t *err;
+
+ err = svn_wc__get_pristine_contents(&base_stream, NULL, db, local_abspath,
+ result_pool, scratch_pool);
+ if (err && err->apr_err == SVN_ERR_WC_NO_PRISTINE)
+ {
+ svn_error_clear(err);
+ base_stream = NULL;
+ }
+ else
+ {
+ SVN_ERR(err);
+ }
- SVN_ERR(svn_wc__get_pristine_contents(&base_stream, NULL, db, local_abspath,
- result_pool, scratch_pool));
if (base_stream == NULL)
{
base_stream = svn_stream_empty(result_pool);
Modified: subversion/branches/pristineless-hack/subversion/libsvn_wc/copy.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_wc/copy.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_wc/copy.c (original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_wc/copy.c Tue Nov
15 13:18:47 2016
@@ -116,6 +116,7 @@ copy_to_tmpdir(svn_skel_t **work_item,
if (file_copy && !unversioned)
{
+#if 0
svn_boolean_t modified;
/* It's faster to look for mods on the source now, as
the timestamp might match, than to examine the
@@ -145,6 +146,7 @@ copy_to_tmpdir(svn_skel_t **work_item,
result_pool, scratch_pool));
return SVN_NO_ERROR;
}
+#endif
}
else if (*kind == svn_node_dir && !file_copy)
{
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_wc/deprecated.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_wc/deprecated.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_wc/deprecated.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_wc/deprecated.c Tue
Nov 15 13:18:47 2016
@@ -184,6 +184,7 @@ svn_wc_crawl_revisions4(const char *path
honor_depth_exclude,
depth_compatibility_trick,
use_commit_times,
+ NULL, NULL,
NULL /* cancel_func */,
NULL /* cancel_baton */,
notify_func,
@@ -1078,6 +1079,7 @@ svn_wc_revert4(svn_wc_context_t *wc_ctx,
changelist_filter,
FALSE /* clear_changelists */,
FALSE /* metadata_only */,
+ NULL, NULL,
cancel_func, cancel_baton,
notify_func, notify_baton,
scratch_pool));
@@ -2055,6 +2057,7 @@ svn_wc_get_diff_editor6(const svn_delta_
reverse_order, server_performs_filtering,
changelist_filter,
diff_processor,
+ NULL, NULL,
cancel_func, cancel_baton,
result_pool, scratch_pool));
}
@@ -3574,6 +3577,7 @@ svn_wc_get_update_editor4(const svn_delt
fetch_dirents_func, fetch_dirents_baton,
conflict_func, conflict_baton,
external_func, external_baton,
+ NULL, NULL,
cancel_func, cancel_baton,
notify_func, notify_baton,
result_pool, scratch_pool));
@@ -3758,6 +3762,7 @@ svn_wc_get_switch_editor4(const svn_delt
fetch_dirents_func, fetch_dirents_baton,
conflict_func, conflict_baton,
external_func, external_baton,
+ NULL, NULL,
cancel_func, cancel_baton,
notify_func, notify_baton,
result_pool, scratch_pool));
Modified: subversion/branches/pristineless-hack/subversion/libsvn_wc/diff.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_wc/diff.h?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_wc/diff.h (original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_wc/diff.h Tue Nov
15 13:18:47 2016
@@ -56,6 +56,8 @@ svn_wc__diff_local_only_file(svn_wc__db_
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
svn_boolean_t diff_pristine,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool);
@@ -80,6 +82,8 @@ svn_wc__diff_local_only_dir(svn_wc__db_t
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
svn_boolean_t diff_pristine,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool);
@@ -97,6 +101,8 @@ svn_wc__diff_base_only_file(svn_wc__db_t
svn_revnum_t revision,
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
apr_pool_t *scratch_pool);
/* Reports the BASE-directory LOCAL_ABSPATH and everything below it (limited
@@ -114,6 +120,8 @@ svn_wc__diff_base_only_dir(svn_wc__db_t
svn_depth_t depth,
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool);
@@ -129,6 +137,8 @@ svn_wc__diff_base_working_diff(svn_wc__d
const svn_diff_tree_processor_t *processor,
void *processor_dir_baton,
svn_boolean_t diff_pristine,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool);
Modified:
subversion/branches/pristineless-hack/subversion/libsvn_wc/diff_editor.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristineless-hack/subversion/libsvn_wc/diff_editor.c?rev=1769826&r1=1769320&r2=1769826&view=diff
==============================================================================
--- subversion/branches/pristineless-hack/subversion/libsvn_wc/diff_editor.c
(original)
+++ subversion/branches/pristineless-hack/subversion/libsvn_wc/diff_editor.c
Tue Nov 15 13:18:47 2016
@@ -99,6 +99,7 @@ struct edit_baton_t
/* ANCHOR/TARGET represent the base of the hierarchy to be compared. */
const char *target;
const char *anchor_abspath;
+ const char *anchor_repo_relpath;
/* Target revision */
svn_revnum_t revnum;
@@ -115,6 +116,9 @@ struct edit_baton_t
/* Possibly diff repos against text-bases instead of working files. */
svn_boolean_t diff_pristine;
+ rev_file_func_t rev_file_func;
+ void *rev_file_baton;
+
/* Cancel function/baton */
svn_cancel_func_t cancel_func;
void *cancel_baton;
@@ -195,6 +199,7 @@ struct file_baton_t
parent directory, diff session and local working copy. */
const char *name;
const char *relpath;
+ const char *repo_relpath;
const char *local_abspath;
/* Processor state */
@@ -220,6 +225,7 @@ struct file_baton_t
/* The current BASE checksum and props */
const svn_checksum_t *base_checksum;
apr_hash_t *base_props;
+ svn_revnum_t base_revison;
/* The resulting from apply_textdelta */
const char *temp_file_path;
@@ -250,6 +256,8 @@ make_edit_baton(struct edit_baton_t **ed
svn_boolean_t ignore_ancestry,
svn_boolean_t use_text_base,
svn_boolean_t reverse_order,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *pool)
@@ -267,6 +275,8 @@ make_edit_baton(struct edit_baton_t **ed
eb->ignore_ancestry = ignore_ancestry;
eb->local_before_remote = reverse_order;
eb->diff_pristine = use_text_base;
+ eb->rev_file_func = rev_file_func;
+ eb->rev_file_baton = rev_file_baton;
eb->cancel_func = cancel_func;
eb->cancel_baton = cancel_baton;
eb->pool = pool;
@@ -342,6 +352,9 @@ make_file_baton(const char *path,
fb->local_abspath = svn_dirent_join(eb->anchor_abspath, path, file_pool);
fb->relpath = svn_dirent_skip_ancestor(eb->anchor_abspath,
fb->local_abspath);
fb->name = svn_dirent_basename(fb->relpath, NULL);
+ if (eb->anchor_repo_relpath)
+ fb->repo_relpath = svn_dirent_join(eb->anchor_repo_relpath, fb->relpath,
+ file_pool);
fb->added = added;
fb->pool = file_pool;
@@ -383,6 +396,8 @@ svn_wc__diff_base_working_diff(svn_wc__d
const svn_diff_tree_processor_t *processor,
void *processor_dir_baton,
svn_boolean_t diff_pristine,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool)
@@ -406,12 +421,14 @@ svn_wc__diff_base_working_diff(svn_wc__d
apr_hash_t *base_props;
apr_hash_t *local_props;
apr_array_header_t *prop_changes;
+ const char *repos_relpath;
- SVN_ERR(svn_wc__db_read_info(&status, NULL, &db_revision, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, &working_checksum, NULL,
- NULL, NULL, NULL, NULL, NULL, &recorded_size,
- &recorded_time, NULL, NULL, NULL,
- &had_props, &props_mod, NULL, NULL, NULL,
+ SVN_ERR(svn_wc__db_read_info(&status, NULL, &db_revision, &repos_relpath,
+ NULL, NULL, NULL, NULL, NULL, NULL,
+ &working_checksum, NULL, NULL, NULL, NULL,
+ NULL, NULL, &recorded_size, &recorded_time,
+ NULL, NULL, NULL, &had_props, &props_mod,
+ NULL, NULL, NULL,
db, local_abspath, scratch_pool, scratch_pool));
checksum = working_checksum;
@@ -476,15 +493,22 @@ svn_wc__diff_base_working_diff(svn_wc__d
if (skip)
return SVN_NO_ERROR;
- SVN_ERR(svn_wc__db_pristine_get_path(&pristine_file,
- db, local_abspath, checksum,
- scratch_pool, scratch_pool));
+ if (!repos_relpath)
+ repos_relpath = local_abspath;
+
+ SVN_ERR(svn_wc__pristine_get_path(&pristine_file,
+ db, local_abspath, checksum,
+ repos_relpath, db_revision,
+ rev_file_func, rev_file_baton,
+ scratch_pool, scratch_pool));
if (diff_pristine)
- SVN_ERR(svn_wc__db_pristine_get_path(&local_file,
- db, local_abspath,
- working_checksum,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_wc__pristine_get_path(&local_file,
+ db, local_abspath,
+ working_checksum,
+ repos_relpath, db_revision,
+ rev_file_func, rev_file_baton,
+ scratch_pool, scratch_pool));
else if (! (had_props || props_mod))
local_file = local_abspath;
else if (files_same)
@@ -769,6 +793,8 @@ walk_local_nodes_diff(struct edit_baton_
moved_from_relpath,
eb->processor, dir_baton,
eb->diff_pristine,
+ eb->rev_file_func,
+ eb->rev_file_baton,
eb->cancel_func,
eb->cancel_baton,
iterpool));
@@ -779,6 +805,8 @@ walk_local_nodes_diff(struct edit_baton_
moved_from_relpath,
eb->processor, dir_baton,
eb->diff_pristine,
+ eb->rev_file_func,
+ eb->rev_file_baton,
eb->cancel_func,
eb->cancel_baton,
iterpool));
@@ -791,12 +819,16 @@ walk_local_nodes_diff(struct edit_baton_
SVN_ERR(svn_wc__diff_base_only_file(db, child_abspath,
child_relpath, eb->revnum,
eb->processor, dir_baton,
+ eb->rev_file_func,
+ eb->rev_file_baton,
iterpool));
else if (base_kind == svn_node_dir && diff_dirs)
SVN_ERR(svn_wc__diff_base_only_dir(db, child_abspath,
child_relpath, eb->revnum,
depth_below_here,
eb->processor, dir_baton,
+ eb->rev_file_func,
+ eb->rev_file_baton,
eb->cancel_func,
eb->cancel_baton,
iterpool));
@@ -815,6 +847,8 @@ walk_local_nodes_diff(struct edit_baton_
eb->revnum,
eb->processor, dir_baton,
eb->diff_pristine,
+ eb->rev_file_func,
+ eb->rev_file_baton,
eb->cancel_func,
eb->cancel_baton,
scratch_pool));
@@ -856,6 +890,8 @@ walk_local_nodes_diff(struct edit_baton_
moved_from_relpath,
eb->processor, dir_baton,
eb->diff_pristine,
+ eb->rev_file_func,
+ eb->rev_file_baton,
eb->cancel_func,
eb->cancel_baton,
iterpool));
@@ -865,6 +901,8 @@ walk_local_nodes_diff(struct edit_baton_
moved_from_relpath,
eb->processor, dir_baton,
eb->diff_pristine,
+ eb->rev_file_func,
+ eb->rev_file_baton,
eb->cancel_func,
eb->cancel_baton,
iterpool));
@@ -922,6 +960,8 @@ svn_wc__diff_local_only_file(svn_wc__db_
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
svn_boolean_t diff_pristine,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool)
@@ -1019,8 +1059,16 @@ svn_wc__diff_local_only_file(svn_wc__db_
right_props = svn_prop_hash_dup(pristine_props, scratch_pool);
if (checksum)
- SVN_ERR(svn_wc__db_pristine_get_path(&pristine_file, db, local_abspath,
- checksum, scratch_pool,
scratch_pool));
+ SVN_ERR(svn_wc__pristine_get_path(&pristine_file, db,
+ local_abspath, checksum,
+ original_repos_relpath
+ ? original_repos_relpath
+ : local_abspath,
+ original_repos_relpath
+ ? original_revision
+ : revision,
+ rev_file_func, rev_file_baton,
+ scratch_pool, scratch_pool));
else
pristine_file = NULL;
@@ -1064,6 +1112,8 @@ svn_wc__diff_local_only_dir(svn_wc__db_t
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
svn_boolean_t diff_pristine,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool)
@@ -1221,6 +1271,8 @@ svn_wc__diff_local_only_dir(svn_wc__db_t
moved_from_relpath,
processor, pdb,
diff_pristine,
+ rev_file_func,
+ rev_file_baton,
cancel_func, cancel_baton,
scratch_pool));
break;
@@ -1234,6 +1286,8 @@ svn_wc__diff_local_only_dir(svn_wc__db_t
moved_from_relpath,
processor, pdb,
diff_pristine,
+ rev_file_func,
+ rev_file_baton,
cancel_func,
cancel_baton,
iterpool));
@@ -1353,6 +1407,7 @@ handle_local_only(struct dir_baton_t *pb
moved_from_relpath,
eb->processor, pb->pdb,
eb->diff_pristine,
+ eb->rev_file_func, eb->rev_file_baton,
eb->cancel_func, eb->cancel_baton,
scratch_pool));
}
@@ -1364,6 +1419,7 @@ handle_local_only(struct dir_baton_t *pb
moved_from_relpath,
eb->processor, pb->pdb,
eb->diff_pristine,
+ eb->rev_file_func, eb->rev_file_baton,
eb->cancel_func, eb->cancel_baton,
scratch_pool));
@@ -1378,6 +1434,8 @@ svn_wc__diff_base_only_file(svn_wc__db_t
svn_revnum_t revision,
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
apr_pool_t *scratch_pool)
{
svn_wc__db_status_t status;
@@ -1415,9 +1473,11 @@ svn_wc__diff_base_only_file(svn_wc__db_t
if (skip)
return SVN_NO_ERROR;
- SVN_ERR(svn_wc__db_pristine_get_path(&pristine_file,
- db, local_abspath, checksum,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_wc__pristine_get_path(&pristine_file,
+ db, local_abspath, checksum,
+ local_abspath, revision,
+ rev_file_func, rev_file_baton,
+ scratch_pool, scratch_pool));
SVN_ERR(processor->file_deleted(relpath,
left_src,
@@ -1438,6 +1498,8 @@ svn_wc__diff_base_only_dir(svn_wc__db_t
svn_depth_t depth,
const svn_diff_tree_processor_t *processor,
void *processor_parent_baton,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *scratch_pool)
@@ -1507,6 +1569,8 @@ svn_wc__diff_base_only_dir(svn_wc__db_t
child_relpath,
revision,
processor, dir_baton,
+ rev_file_func,
+ rev_file_baton,
iterpool));
break;
case svn_node_dir:
@@ -1522,6 +1586,8 @@ svn_wc__diff_base_only_dir(svn_wc__db_t
revision,
depth_below_here,
processor, dir_baton,
+ rev_file_func,
+ rev_file_baton,
cancel_func,
cancel_baton,
iterpool));
@@ -1991,6 +2057,14 @@ open_file(const char *path,
struct edit_baton_t *eb = pb->eb;
struct file_baton_t *fb;
+ if (!eb->anchor_repo_relpath)
+ SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL,
+ &eb->anchor_repo_relpath,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, eb->db, eb->anchor_abspath,
+ eb->pool, file_pool));
+
fb = make_file_baton(path, FALSE, pb, file_pool);
*file_baton = fb;
@@ -2041,9 +2115,10 @@ open_file(const char *path,
fb->left_src = svn_diff__source_create(eb->revnum, fb->pool);
- SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, &fb->base_checksum, NULL,
- NULL, NULL, &fb->base_props, NULL,
+ SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, &fb->base_revison, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
+ &fb->base_checksum, NULL, NULL, NULL,
+ &fb->base_props, NULL,
eb->db, fb->local_abspath,
fb->pool, fb->pool));
@@ -2111,17 +2186,21 @@ apply_textdelta(void *file_baton,
pool));
}
- SVN_ERR(svn_wc__db_pristine_read(&source, NULL,
- eb->db, fb->local_abspath,
- fb->base_checksum,
- pool, pool));
+ SVN_ERR(svn_wc__pristine_get(&source, NULL,
+ eb->db, fb->local_abspath,
+ fb->base_checksum,
+ fb->repo_relpath, fb->base_revison,
+ eb->rev_file_func, eb->rev_file_baton,
+ pool, pool));
}
else if (fb->base_checksum)
{
- SVN_ERR(svn_wc__db_pristine_read(&source, NULL,
- eb->db, fb->local_abspath,
- fb->base_checksum,
- pool, pool));
+ SVN_ERR(svn_wc__pristine_get(&source, NULL,
+ eb->db, fb->local_abspath,
+ fb->base_checksum,
+ fb->repo_relpath, fb->base_revison,
+ eb->rev_file_func, eb->rev_file_baton,
+ pool, pool));
}
else
source = svn_stream_empty(pool);
@@ -2215,10 +2294,13 @@ close_file(void *file_baton,
if (! repos_file)
{
assert(fb->base_checksum);
- SVN_ERR(svn_wc__db_pristine_get_path(&repos_file,
- eb->db, eb->anchor_abspath,
- fb->base_checksum,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_wc__pristine_get_path(&repos_file,
+ eb->db, eb->anchor_abspath,
+ fb->base_checksum,
+ fb->local_abspath, fb->base_revison,
+ eb->rev_file_func,
+ eb->rev_file_baton,
+ scratch_pool, scratch_pool));
}
}
@@ -2245,16 +2327,21 @@ close_file(void *file_baton,
if (eb->diff_pristine)
{
const svn_checksum_t *checksum;
- SVN_ERR(svn_wc__db_read_pristine_info(NULL, NULL, NULL, NULL, NULL,
- NULL, &checksum, NULL, NULL,
- &local_props,
+ svn_revnum_t revision;
+
+ SVN_ERR(svn_wc__db_read_pristine_info(NULL, NULL, &revision, NULL,
+ NULL, NULL, &checksum, NULL,
+ NULL, &local_props,
eb->db, fb->local_abspath,
scratch_pool, scratch_pool));
assert(checksum);
- SVN_ERR(svn_wc__db_pristine_get_path(&localfile,
- eb->db, eb->anchor_abspath,
- checksum,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_wc__pristine_get_path(&localfile,
+ eb->db, eb->anchor_abspath,
+ checksum,
+ fb->local_abspath, revision,
+ eb->rev_file_func,
+ eb->rev_file_baton,
+ scratch_pool, scratch_pool));
}
else
{
@@ -2387,6 +2474,8 @@ svn_wc__get_diff_editor(const svn_delta_
svn_boolean_t server_performs_filtering,
const apr_array_header_t *changelist_filter,
const svn_diff_tree_processor_t *diff_processor,
+ rev_file_func_t rev_file_func,
+ void *rev_file_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *result_pool,
@@ -2420,6 +2509,7 @@ svn_wc__get_diff_editor(const svn_delta_
diff_processor,
depth, ignore_ancestry,
use_text_base, reverse_order,
+ rev_file_func, rev_file_baton,
cancel_func, cancel_baton,
result_pool));