Author: hwright
Date: Tue Dec 15 21:45:45 2009
New Revision: 891009
URL: http://svn.apache.org/viewvc?rev=891009&view=rev
Log:
Manually merge the 1.6.x-r40452 branch back to 1.6.x:
* r880525, r880526
Fix 'svn resolve --accept=theirs-conflict' for targets which live inside
a subdirectory of the current working directory.
Justification:
'svn resolve --accept=theirs-conflict' cannot be used reliably.
Notes:
A backport branch is at ^/subversion/branches/1.6.x-r40452.
1.6.x has an additional bug which does not occur on trunk, requiring
additional fixes exclusive to 1.6.x. See the log message of r880532
(which shows what the bug is), and see r880533 (which fixes the bug).
Votes:
+1: stsp, pburba, cmpilato
Modified:
subversion/branches/1.6.x/ (props changed)
subversion/branches/1.6.x/CHANGES (props changed)
subversion/branches/1.6.x/STATUS
subversion/branches/1.6.x/subversion/libsvn_wc/adm_ops.c
subversion/branches/1.6.x/subversion/tests/cmdline/resolved_tests.py
Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 15 21:45:45 2009
@@ -1,53 +1,53 @@
-/subversion/branches/1.5.x-r30215:870312
-/subversion/branches/1.6.x-UNC-paths:876471-876545
-/subversion/branches/1.6.x-dirent-basename:876130-876262
+/subversion/branches/1.5.x-r30215:866657
+/subversion/branches/1.6.x-UNC-paths:872816-872890
+/subversion/branches/1.6.x-dirent-basename:872475-872607
/subversion/branches/1.6.x-future-proof:880259-884209
-/subversion/branches/1.6.x-issue3443:878597-879480
+/subversion/branches/1.6.x-issue3443:874942-875825
/subversion/branches/1.6.x-issue3519:880376-889934
-/subversion/branches/1.6.x-no-svn_uri:876360-876415
-/subversion/branches/1.6.x-r36178:877876-877884
-/subversion/branches/1.6.x-r36252:876328-876788
-/subversion/branches/1.6.x-r37622:877699-877993
-/subversion/branches/1.6.x-r37627:877704-877928
-/subversion/branches/1.6.x-r37857:877932-877936
-/subversion/branches/1.6.x-r37953:879809-880071
-/subversion/branches/1.6.x-r37988:878063-878897
-/subversion/branches/1.6.x-r38000:879083-879767
-/subversion/branches/1.6.x-r38222:878299-878891
-/subversion/branches/1.6.x-r38572:878661-878666
-/subversion/branches/1.6.x-r38799:878880-878917
-/subversion/branches/1.6.x-r38927:879002-879176
-/subversion/branches/1.6.x-r39557:879668-879907
-/subversion/branches/1.6.x-r39887:880024-880066
+/subversion/branches/1.6.x-no-svn_uri:872705-872760
+/subversion/branches/1.6.x-r36178:874221-874229
+/subversion/branches/1.6.x-r36252:872673-873133
+/subversion/branches/1.6.x-r37622:874044-874338
+/subversion/branches/1.6.x-r37627:874049-874273
+/subversion/branches/1.6.x-r37857:874277-874281
+/subversion/branches/1.6.x-r37953:876154-876416
+/subversion/branches/1.6.x-r37988:874408-875242
+/subversion/branches/1.6.x-r38000:875428-876112
+/subversion/branches/1.6.x-r38222:874644-875236
+/subversion/branches/1.6.x-r38572:875006-875011
+/subversion/branches/1.6.x-r38799:875225-875262
+/subversion/branches/1.6.x-r38927:875347-875521
+/subversion/branches/1.6.x-r39557:876013-876252
+/subversion/branches/1.6.x-r39887:876369-876411
+/subversion/branches/1.6.x-r40452:880530-890996
/subversion/branches/1.6.x-r889840:889888-890974
-/subversion/branches/bdb-reverse-deltas:872050-872529
-/subversion/branches/diff-callbacks3:870059-870761
-/subversion/branches/dont-save-plaintext-passwords-by-default:870728-871118
-/subversion/branches/double-delete:870511-872970
-/subversion/branches/file-externals:871779-873302
-/subversion/branches/fs-rep-sharing:869036-873803
-/subversion/branches/fsfs-pack:873717-874575
-/subversion/branches/gnome-keyring:870558-871410
-/subversion/branches/in-memory-cache:869829-871452
-/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-3334-dirs:875156-875867
-/subversion/branches/kwallet:870785-871314
-/subversion/branches/log-g-performance:870941-871032
-/subversion/branches/merge-skips-obstructions:874525-874615
-/subversion/branches/reintegrate-improvements:873853-874164
-/subversion/branches/svn-mergeinfo-enhancements:870119-870195,870197-870288
-/subversion/branches/svnpatch-diff:871905,871986
-/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/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876109,876123-876125,876129,876132,876138,876160,876167,876180,876185,876205,876223-876225,876230,876233,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877028-877029,877038,877119,877127,877146,877157,877191,877195,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,877472,877544,877553,877565,877568,877573,877593,877601,877612,87766
7,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878240,878242,878255,878272,878279,878296-878297,878303,878335,878338,878353,878364,878367-878368,878385,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878915,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,879635-879636,879688,879709-879711,879747,879954,879961,880082,880095,880105,880162,880226,880274-880275,880474,881905,884842,886164,886197,888979,889081,889840
-subversion/branches/http-protocol-v2:875632
-subversion/trunk:880370
+/subversion/branches/bdb-reverse-deltas:868395-868874
+/subversion/branches/diff-callbacks3:866404-867106
+/subversion/branches/dont-save-plaintext-passwords-by-default:867073-867463
+/subversion/branches/double-delete:866856-869315
+/subversion/branches/file-externals:868124-869647
+/subversion/branches/fs-rep-sharing:865381-870148
+/subversion/branches/fsfs-pack:870062-870920
+/subversion/branches/gnome-keyring:866903-867755
+/subversion/branches/http-protocol-v2:875632
+/subversion/branches/in-memory-cache:866174-867797
+/subversion/branches/issue-2843-dev:867777-870524
+/subversion/branches/issue-3000:868058,868061-868064,868066-868071,868073,868079
+/subversion/branches/issue-3067-deleted-subtrees:869720-870429
+/subversion/branches/issue-3148-dev:871538-871549
+/subversion/branches/issue-3220-dev:868555-868571
+/subversion/branches/issue-3334-dirs:871501-872212
+/subversion/branches/kwallet:867130-867659
+/subversion/branches/log-g-performance:867286-867377
+/subversion/branches/merge-skips-obstructions:870870-870960
+/subversion/branches/reintegrate-improvements:870198-870509
+/subversion/branches/svn-mergeinfo-enhancements:866464-866540,866542-866633
+/subversion/branches/svnpatch-diff:868250,868331
+/subversion/branches/svnserve-logging:866173-867238
+/subversion/branches/tc-issue-3334:871042-871118
+/subversion/branches/tc-merge-notify:870362-870407
+/subversion/branches/tc-resolve:870536-870584
+/subversion/branches/tc_url_rev:870696-870828
+/subversion/branches/tree-conflicts:864636-869499
+/subversion/branches/tree-conflicts-notify:870271-870353
+/subversion/trunk:875976,875980-875981,876054-876056,876092,876299,876306,876427,876440,876450,876507,876571,879688,880274-880275,880370,880474,880525-880526,881905,884842,886164,886197,888979,889081,889840
Propchange: subversion/branches/1.6.x/CHANGES
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 15 21:45:45 2009
@@ -1,51 +1,52 @@
-/subversion/branches/1.5.x-r30215/CHANGES:870312
-/subversion/branches/1.6.x-UNC-paths/CHANGES:876471-876545
-/subversion/branches/1.6.x-dirent-basename/CHANGES:876130-876262
+/subversion/branches/1.5.x-r30215/CHANGES:866657
+/subversion/branches/1.6.x-UNC-paths/CHANGES:872816-872890
+/subversion/branches/1.6.x-dirent-basename/CHANGES:872475-872607
/subversion/branches/1.6.x-future-proof/CHANGES:880259-884209
-/subversion/branches/1.6.x-issue3443/CHANGES:878597-879480
+/subversion/branches/1.6.x-issue3443/CHANGES:874942-875825
/subversion/branches/1.6.x-issue3519/CHANGES:880376-889934
-/subversion/branches/1.6.x-no-svn_uri/CHANGES:876360-876415
-/subversion/branches/1.6.x-r36178/CHANGES:877876-877884
-/subversion/branches/1.6.x-r36252/CHANGES:876328-876788
-/subversion/branches/1.6.x-r37622/CHANGES:877699-877993
-/subversion/branches/1.6.x-r37627/CHANGES:877704-877928
-/subversion/branches/1.6.x-r37857/CHANGES:877932-877936
-/subversion/branches/1.6.x-r37953/CHANGES:879809-880071
-/subversion/branches/1.6.x-r37988/CHANGES:878063-878897
-/subversion/branches/1.6.x-r38000/CHANGES:879083-879767
-/subversion/branches/1.6.x-r38222/CHANGES:878299-878891
-/subversion/branches/1.6.x-r38572/CHANGES:878661-878666
-/subversion/branches/1.6.x-r38799/CHANGES:878880-878917
-/subversion/branches/1.6.x-r38927/CHANGES:879002-879176
-/subversion/branches/1.6.x-r39557/CHANGES:879668-879907
-/subversion/branches/1.6.x-r39887/CHANGES:880024-880066
+/subversion/branches/1.6.x-no-svn_uri/CHANGES:872705-872760
+/subversion/branches/1.6.x-r36178/CHANGES:874221-874229
+/subversion/branches/1.6.x-r36252/CHANGES:872673-873133
+/subversion/branches/1.6.x-r37622/CHANGES:874044-874338
+/subversion/branches/1.6.x-r37627/CHANGES:874049-874273
+/subversion/branches/1.6.x-r37857/CHANGES:874277-874281
+/subversion/branches/1.6.x-r37953/CHANGES:876154-876416
+/subversion/branches/1.6.x-r37988/CHANGES:874408-875242
+/subversion/branches/1.6.x-r38000/CHANGES:875428-876112
+/subversion/branches/1.6.x-r38222/CHANGES:874644-875236
+/subversion/branches/1.6.x-r38572/CHANGES:875006-875011
+/subversion/branches/1.6.x-r38799/CHANGES:875225-875262
+/subversion/branches/1.6.x-r38927/CHANGES:875347-875521
+/subversion/branches/1.6.x-r39557/CHANGES:876013-876252
+/subversion/branches/1.6.x-r39887/CHANGES:876369-876411
+/subversion/branches/1.6.x-r40452/CHANGES:880530-890996
/subversion/branches/1.6.x-r889840/CHANGES:889888-890974
-/subversion/branches/bdb-reverse-deltas/CHANGES:872050-872529
-/subversion/branches/diff-callbacks3/CHANGES:870059-870761
-/subversion/branches/dont-save-plaintext-passwords-by-default/CHANGES:870728-871118
-/subversion/branches/double-delete/CHANGES:870511-872970
-/subversion/branches/file-externals/CHANGES:871779-873302
-/subversion/branches/fs-rep-sharing/CHANGES:869036-873803
-/subversion/branches/fsfs-pack/CHANGES:873717-874575
-/subversion/branches/gnome-keyring/CHANGES:870558-871410
-/subversion/branches/in-memory-cache/CHANGES:869829-871452
-/subversion/branches/issue-2843-dev/CHANGES:871432-874179
-/subversion/branches/issue-3000/CHANGES:871713,871716-871719,871721-871726,871728,871734
-/subversion/branches/issue-3067-deleted-subtrees/CHANGES:873375-874084
-/subversion/branches/issue-3148-dev/CHANGES:875193-875204
-/subversion/branches/issue-3220-dev/CHANGES:872210-872226
-/subversion/branches/issue-3334-dirs/CHANGES:875156-875867
-/subversion/branches/kwallet/CHANGES:870785-871314
-/subversion/branches/log-g-performance/CHANGES:870941-871032
-/subversion/branches/merge-skips-obstructions/CHANGES:874525-874615
-/subversion/branches/reintegrate-improvements/CHANGES:873853-874164
-/subversion/branches/svn-mergeinfo-enhancements/CHANGES:870119-870195,870197-870288
-/subversion/branches/svnpatch-diff/CHANGES:871905,871986
-/subversion/branches/svnserve-logging/CHANGES:869828-870893
-/subversion/branches/tc-issue-3334/CHANGES:874697-874773
-/subversion/branches/tc-merge-notify/CHANGES:874017-874062
-/subversion/branches/tc-resolve/CHANGES:874191-874239
-/subversion/branches/tc_url_rev/CHANGES:874351-874483
-/subversion/branches/tree-conflicts/CHANGES:868291-873154
-/subversion/branches/tree-conflicts-notify/CHANGES:873926-874008
-/subversion/trunk/CHANGES:836421-841355,875962-880126,880162,880226,880274-880275,880474,881905,884842,886164,886197,888979,889081,889840
+/subversion/branches/bdb-reverse-deltas/CHANGES:868395-868874
+/subversion/branches/diff-callbacks3/CHANGES:866404-867106
+/subversion/branches/dont-save-plaintext-passwords-by-default/CHANGES:867073-867463
+/subversion/branches/double-delete/CHANGES:866856-869315
+/subversion/branches/file-externals/CHANGES:868124-869647
+/subversion/branches/fs-rep-sharing/CHANGES:865381-870148
+/subversion/branches/fsfs-pack/CHANGES:870062-870920
+/subversion/branches/gnome-keyring/CHANGES:866903-867755
+/subversion/branches/in-memory-cache/CHANGES:866174-867797
+/subversion/branches/issue-2843-dev/CHANGES:867777-870524
+/subversion/branches/issue-3000/CHANGES:868058,868061-868064,868066-868071,868073,868079
+/subversion/branches/issue-3067-deleted-subtrees/CHANGES:869720-870429
+/subversion/branches/issue-3148-dev/CHANGES:871538-871549
+/subversion/branches/issue-3220-dev/CHANGES:868555-868571
+/subversion/branches/issue-3334-dirs/CHANGES:871501-872212
+/subversion/branches/kwallet/CHANGES:867130-867659
+/subversion/branches/log-g-performance/CHANGES:867286-867377
+/subversion/branches/merge-skips-obstructions/CHANGES:870870-870960
+/subversion/branches/reintegrate-improvements/CHANGES:870198-870509
+/subversion/branches/svn-mergeinfo-enhancements/CHANGES:866464-866540,866542-866633
+/subversion/branches/svnpatch-diff/CHANGES:868250,868331
+/subversion/branches/svnserve-logging/CHANGES:866173-867238
+/subversion/branches/tc-issue-3334/CHANGES:871042-871118
+/subversion/branches/tc-merge-notify/CHANGES:870362-870407
+/subversion/branches/tc-resolve/CHANGES:870536-870584
+/subversion/branches/tc_url_rev/CHANGES:870696-870828
+/subversion/branches/tree-conflicts/CHANGES:864636-869499
+/subversion/branches/tree-conflicts-notify/CHANGES:870271-870353
+/subversion/trunk/CHANGES:836421-837700,875962-876471,876507,876571,880274-880275,880474,880525-880526,881905,884842,886164,886197,888979,889081,889840
Modified: subversion/branches/1.6.x/STATUS
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=891009&r1=891008&r2=891009&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Tue Dec 15 21:45:45 2009
@@ -161,16 +161,3 @@
Approved changes:
=================
-
- * r880525, r880526
- Fix 'svn resolve --accept=theirs-conflict' for targets which live inside
- a subdirectory of the current working directory.
- Justification:
- 'svn resolve --accept=theirs-conflict' cannot be used reliably.
- Notes:
- A backport branch is at ^/subversion/branches/1.6.x-r40452.
- 1.6.x has an additional bug which does not occur on trunk, requiring
- additional fixes exclusive to 1.6.x. See the log message of r880532
- (which shows what the bug is), and see r880533 (which fixes the bug).
- Votes:
- +1: stsp, pburba, cmpilato
Modified: subversion/branches/1.6.x/subversion/libsvn_wc/adm_ops.c
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_wc/adm_ops.c?rev=891009&r1=891008&r2=891009&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_wc/adm_ops.c Tue Dec 15
21:45:45 2009
@@ -2748,13 +2748,19 @@
switch (conflict_choice)
{
case svn_wc_conflict_choose_base:
- auto_resolve_src = entry->conflict_old;
+ auto_resolve_src = svn_path_join(
+ svn_wc_adm_access_path(conflict_dir),
+ entry->conflict_old, pool);
break;
case svn_wc_conflict_choose_mine_full:
- auto_resolve_src = entry->conflict_wrk;
+ auto_resolve_src = svn_path_join(
+ svn_wc_adm_access_path(conflict_dir),
+ entry->conflict_wrk, pool);
break;
case svn_wc_conflict_choose_theirs_full:
- auto_resolve_src = entry->conflict_new;
+ auto_resolve_src = svn_path_join(
+ svn_wc_adm_access_path(conflict_dir),
+ entry->conflict_new, pool);
break;
case svn_wc_conflict_choose_merged:
auto_resolve_src = NULL;
@@ -2768,6 +2774,9 @@
apr_file_t *tmp_f;
svn_stream_t *tmp_stream;
svn_diff_t *diff;
+ const char *conflict_old;
+ const char *conflict_wrk;
+ const char *conflict_new;
svn_diff_conflict_display_style_t style =
conflict_choice == svn_wc_conflict_choose_theirs_conflict
? svn_diff_conflict_display_latest
@@ -2779,16 +2788,40 @@
svn_io_file_del_none,
pool));
tmp_stream = svn_stream_from_aprfile2(tmp_f, FALSE, pool);
+
+ /* ### If any of these paths isn't absolute, treat it
+ * ### as relative to CONFLICT_DIR_ABSPATH.
+ * ### Else we end up erroring out here, e.g. if the file
+ * ### is just a basename, and does not live in the current
+ * ### working directory.
+ * ### The API docs are unclear about whether these paths
+ * ### must be absolute or not. */
+ conflict_old = entry->conflict_old;
+ conflict_wrk = entry->conflict_wrk;
+ conflict_new = entry->conflict_new;
+ if (! svn_dirent_is_absolute(conflict_old))
+ conflict_old = svn_dirent_join(
+ svn_wc_adm_access_path(conflict_dir),
+ entry->conflict_old, pool);
+ if (! svn_dirent_is_absolute(conflict_wrk))
+ conflict_wrk = svn_dirent_join(
+ svn_wc_adm_access_path(conflict_dir),
+ entry->conflict_wrk, pool);
+ if (! svn_dirent_is_absolute(conflict_new))
+ conflict_new = svn_dirent_join(
+ svn_wc_adm_access_path(conflict_dir),
+ entry->conflict_new, pool);
+
SVN_ERR(svn_diff_file_diff3_2(&diff,
- entry->conflict_old,
- entry->conflict_wrk,
- entry->conflict_new,
+ conflict_old,
+ conflict_wrk,
+ conflict_new,
svn_diff_file_options_create(pool),
pool));
SVN_ERR(svn_diff_file_output_merge2(tmp_stream, diff,
- entry->conflict_old,
- entry->conflict_wrk,
- entry->conflict_new,
+ conflict_old,
+ conflict_wrk,
+ conflict_new,
/* markers ignored */
NULL, NULL, NULL, NULL,
style,
@@ -2805,10 +2838,7 @@
}
if (auto_resolve_src)
- SVN_ERR(svn_io_copy_file(
- svn_path_join(svn_wc_adm_access_path(conflict_dir), auto_resolve_src,
- pool),
- path, TRUE, pool));
+ SVN_ERR(svn_io_copy_file(auto_resolve_src, path, TRUE, pool));
}
/* Yes indeed, being able to map a function over a list would be nice. */
Modified: subversion/branches/1.6.x/subversion/tests/cmdline/resolved_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/tests/cmdline/resolved_tests.py?rev=891009&r1=891008&r2=891009&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/tests/cmdline/resolved_tests.py
(original)
+++ subversion/branches/1.6.x/subversion/tests/cmdline/resolved_tests.py Tue
Dec 15 21:45:45 2009
@@ -318,6 +318,27 @@
+def theirs_conflict_in_subdir(sbox):
+ "resolve to 'theirs-conflict' in sub-directory"
+
+ sbox.build()
+ wc = sbox.wc_dir
+ wc2 = sbox.add_wc_path('wc2')
+ svntest.actions.duplicate_dir(sbox.wc_dir, wc2)
+
+ alpha_path = os.path.join(wc, 'A', 'B', 'E', 'alpha')
+ alpha_path2 = os.path.join(wc2, 'A', 'B', 'E', 'alpha')
+
+ svntest.main.file_append(alpha_path, "Modified alpha.\n")
+ svntest.main.run_svn(None, 'ci', '-m', 'logmsg', wc)
+
+ svntest.main.file_append(alpha_path2, "Modified alpha, too.\n")
+ svntest.main.run_svn(None, 'up', wc2)
+
+ svntest.actions.run_and_verify_resolve([alpha_path2],
+ '--accept=theirs-conflict',
+ alpha_path2)
+
#######################################################################
# Run the tests
@@ -326,6 +347,7 @@
test_list = [ None,
resolved_on_wc_root,
resolved_on_deleted_item,
+ theirs_conflict_in_subdir,
]
if __name__ == '__main__':