Modified: subversion/branches/javahl-1.8-extensions/subversion/svn/conflict-callbacks.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/svn/conflict-callbacks.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/svn/conflict-callbacks.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/svn/conflict-callbacks.c Fri Jul 26 01:03:26 2013 @@ -453,7 +453,7 @@ static const resolver_option_t text_conf -1 }, { "df", N_("show diff"), N_("show all changes made to merged file"), -1 }, - { "r", N_("resolved"), N_("accept merged version of file"), + { "r", N_("mark resolved"), N_("accept merged version of file"), svn_wc_conflict_choose_merged }, { "", "", "", svn_wc_conflict_choose_unspecified }, { "dc", N_("display conflict"), N_("show all conflicts " @@ -473,13 +473,13 @@ static const resolver_option_t text_conf "(same) [theirs-full]"), svn_wc_conflict_choose_theirs_full }, { "", "", "", svn_wc_conflict_choose_unspecified }, - { "p", N_("postpone"), N_("mark the conflict to be resolved later" - " [postpone]"), - svn_wc_conflict_choose_postpone }, { "m", N_("merge"), N_("use internal merge tool to resolve " "conflict"), -1 }, { "l", N_("launch tool"), N_("launch external tool to resolve " "conflict [launch]"), -1 }, + { "p", N_("postpone"), N_("mark the conflict to be resolved later" + " [postpone]"), + svn_wc_conflict_choose_postpone }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "s", N_("show all options"), N_("show this list (also 'h', '?')"), -1 }, @@ -489,9 +489,6 @@ static const resolver_option_t text_conf /* Resolver options for a property conflict */ static const resolver_option_t prop_conflict_options[] = { - { "p", N_("postpone"), N_("mark the conflict to be resolved later" - " [postpone]"), - svn_wc_conflict_choose_postpone }, { "mf", N_("my version"), N_("accept my version of entire file (even " "non-conflicts) [mine-full]"), svn_wc_conflict_choose_mine_full }, @@ -501,8 +498,11 @@ static const resolver_option_t prop_conf { "dc", N_("display conflict"), N_("show conflicts in this property"), -1 }, { "e", N_("edit property"), N_("change merged property value in an editor" " [edit]"), -1 }, - { "r", N_("resolved"), N_("accept edited version of property"), + { "r", N_("mark resolved"), N_("accept edited version of property"), svn_wc_conflict_choose_merged }, + { "p", N_("postpone"), N_("mark the conflict to be resolved later" + " [postpone]"), + svn_wc_conflict_choose_postpone }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "h", N_("help"), N_("show this help (also '?')"), -1 }, @@ -512,15 +512,15 @@ static const resolver_option_t prop_conf /* Resolver options for an obstructued addition */ static const resolver_option_t obstructed_add_options[] = { - { "p", N_("postpone"), N_("mark the conflict to be resolved later" - " [postpone]"), - svn_wc_conflict_choose_postpone }, { "mf", N_("my version"), N_("accept pre-existing item (ignore " "upstream addition) [mine-full]"), svn_wc_conflict_choose_mine_full }, { "tf", N_("their version"), N_("accept incoming item (overwrite " "pre-existing item) [theirs-full]"), svn_wc_conflict_choose_theirs_full }, + { "p", N_("postpone"), N_("mark the conflict to be resolved later" + " [postpone]"), + svn_wc_conflict_choose_postpone }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "h", N_("help"), N_("show this help (also '?')"), -1 }, @@ -530,10 +530,10 @@ static const resolver_option_t obstructe /* Resolver options for a tree conflict */ static const resolver_option_t tree_conflict_options[] = { + { "r", N_("mark resolved"), N_("accept current working copy state"), + svn_wc_conflict_choose_merged }, { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), svn_wc_conflict_choose_postpone }, - { "r", N_("resolved"), N_("accept current working copy state"), - svn_wc_conflict_choose_merged }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "h", N_("help"), N_("show this help (also '?')"), -1 }, @@ -542,30 +542,46 @@ static const resolver_option_t tree_conf static const resolver_option_t tree_conflict_options_update_moved_away[] = { - { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), - svn_wc_conflict_choose_postpone }, - { "mc", N_("my side of conflict"), N_("apply update to the move destination" - " [mine-conflict]"), + { "mc", N_("apply update (recommended)"), + N_("apply update to the move destination" + " [mine-conflict]"), svn_wc_conflict_choose_mine_conflict }, - { "r", N_("resolved"), N_("mark resolved " - "(the move will become a copy)"), + { "r", N_("discard update (breaks move)"), N_("discard update, mark " + "resolved, the move will " + "will become a copy"), svn_wc_conflict_choose_merged }, + { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), + svn_wc_conflict_choose_postpone }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "h", N_("help"), N_("show this help (also '?')"), -1 }, { NULL } }; -static const resolver_option_t tree_conflict_options_update_deleted[] = +static const resolver_option_t tree_conflict_options_update_edit_moved_away[] = { + { "mc", N_("apply update to move destination"), + N_("apply incoming update to move destination" + " [mine-conflict]"), + svn_wc_conflict_choose_mine_conflict }, { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), svn_wc_conflict_choose_postpone }, - { "mc", N_("my side of conflict"), N_("keep any moves affected " - "by this deletion [mine-conflict]"), + { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), + svn_wc_conflict_choose_postpone }, + { "h", N_("help"), N_("show this help (also '?')"), -1 }, + { NULL } +}; + +static const resolver_option_t tree_conflict_options_update_deleted[] = +{ + { "mc", N_("keep affected local moves"), N_("keep any local moves affected " + "by this deletion [mine-conflict]"), svn_wc_conflict_choose_mine_conflict }, - { "r", N_("resolved"), N_("mark resolved (any affected moves will " - "become copies)"), + { "r", N_("mark resolved (breaks moves)"), N_("mark resolved, any affected " + "moves will become copies"), svn_wc_conflict_choose_merged }, + { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), + svn_wc_conflict_choose_postpone }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "h", N_("help"), N_("show this help (also '?')"), -1 }, @@ -574,14 +590,14 @@ static const resolver_option_t tree_conf static const resolver_option_t tree_conflict_options_update_replaced[] = { - { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), - svn_wc_conflict_choose_postpone }, - { "mc", N_("my side of conflict"), N_("keep any moves affected by this " - "replacement [mine-conflict]"), + { "mc", N_("keep affected local moves"), N_("keep any moves affected by this " + "replacement [mine-conflict]"), svn_wc_conflict_choose_mine_conflict }, - { "r", N_("resolved"), N_("mark resolved (any affected moves will " - "become copies)"), + { "r", N_("mark resolved (breaks moves)"), N_("mark resolved (any affected " + "moves will become copies)"), svn_wc_conflict_choose_merged }, + { "p", N_("postpone"), N_("resolve the conflict later [postpone]"), + svn_wc_conflict_choose_postpone }, { "q", N_("quit resolution"), N_("postpone all remaining conflicts"), svn_wc_conflict_choose_postpone }, { "h", N_("help"), N_("show this help (also '?')"), -1 }, @@ -925,7 +941,7 @@ handle_text_conflict(svn_wc_conflict_res SVN_ERR(svn_cmdline_fprintf( stderr, iterpool, _("Invalid option; use diff/edit/merge/launch " - "before choosing 'resolved'.\n\n"))); + "before choosing 'mark resolved'.\n\n"))); continue; } @@ -1078,7 +1094,12 @@ handle_tree_conflict(svn_wc_conflict_res desc->operation == svn_wc_operation_switch) { if (desc->reason == svn_wc_conflict_reason_moved_away) - tc_opts = tree_conflict_options_update_moved_away; + { + if (desc->action == svn_wc_conflict_action_edit) + tc_opts = tree_conflict_options_update_edit_moved_away; + else + tc_opts = tree_conflict_options_update_moved_away; + } else if (desc->reason == svn_wc_conflict_reason_deleted) tc_opts = tree_conflict_options_update_deleted; else if (desc->reason == svn_wc_conflict_reason_replaced)
Modified: subversion/branches/javahl-1.8-extensions/subversion/svn/file-merge.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/svn/file-merge.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/svn/file-merge.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/svn/file-merge.c Fri Jul 26 01:03:26 2013 @@ -655,6 +655,8 @@ merge_chunks(apr_array_header_t **merged svn_stringbuf_appendcstr( prompt, _("Select: (1) use their version, (2) use your version,\n" + " (12) their version first, then yours,\n" + " (21) your version first, then theirs,\n" " (e1) edit their version and use the result,\n" " (e2) edit your version and use the result,\n" " (eb) edit both versions and use the result,\n" @@ -679,6 +681,24 @@ merge_chunks(apr_array_header_t **merged *merged_chunk = chunk2; break; } + if (strcmp(answer, "12") == 0) + { + *merged_chunk = apr_array_make(result_pool, + chunk1->nelts + chunk2->nelts, + sizeof(svn_stringbuf_t *)); + apr_array_cat(*merged_chunk, chunk1); + apr_array_cat(*merged_chunk, chunk2); + break; + } + if (strcmp(answer, "21") == 0) + { + *merged_chunk = apr_array_make(result_pool, + chunk1->nelts + chunk2->nelts, + sizeof(svn_stringbuf_t *)); + apr_array_cat(*merged_chunk, chunk2); + apr_array_cat(*merged_chunk, chunk1); + break; + } else if (strcmp(answer, "p") == 0) { *merged_chunk = NULL; Modified: subversion/branches/javahl-1.8-extensions/subversion/svn/svn.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/svn/svn.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/svn/svn.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/svn/svn.c Fri Jul 26 01:03:26 2013 @@ -484,9 +484,19 @@ const svn_opt_subcommand_desc2_t svn_cl_ {'r', 'q', 'N', opt_depth, opt_force, opt_ignore_externals} }, { "cleanup", svn_cl__cleanup, {0}, N_ - ("Recursively clean up the working copy, removing locks, resuming\n" + ("Recursively clean up the working copy, removing write locks, resuming\n" "unfinished operations, etc.\n" - "usage: cleanup [WCPATH...]\n"), + "usage: cleanup [WCPATH...]\n" + "\n" + " Finish any unfinished business in the working copy at WCPATH, and remove\n" + " write locks (shown as 'L' by the 'svn status' command) from the working\n" + " copy. Usually, this is only necessary if a Subversion client has crashed\n" + " while using the working copy, leaving it in an unusable state.\n" + "\n" + " WARNING: There is no mechanism that will protect write locks still\n" + " being used by other Subversion clients. Running this command\n" + " while another client is using the working copy can corrupt\n" + " the working copy beyond repair!\n"), {opt_merge_cmd} }, { "commit", svn_cl__commit, {"ci"}, Propchange: subversion/branches/javahl-1.8-extensions/subversion/svn/svn.c ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Fri Jul 26 01:03:26 2013 @@ -0,0 +1,84 @@ +/subversion/branches/1.5.x-r30215/subversion/svn/svn.c:870312 +/subversion/branches/1.7.x-fs-verify/subversion/svn/svn.c:1146708,1161180 +/subversion/branches/1.8.x/subversion/svn/svn.c:1483275-1507165 +/subversion/branches/1.8.x-busted-proxy/subversion/svn/svn.c:1499222-1502434 +/subversion/branches/1.8.x-libsvnjavahl-version/subversion/svn/svn.c:1483910-1485054 +/subversion/branches/1.8.x-r1477876/subversion/svn/svn.c:1477981-1487716 +/subversion/branches/1.8.x-r1481625/subversion/svn/svn.c:1481637-1482135 +/subversion/branches/1.8.x-r1495063/subversion/svn/svn.c:1495804-1501074 +/subversion/branches/1.8.x-r1497310-partial/subversion/svn/svn.c:1497500-1501063 +/subversion/branches/1.8.x-svn_fs_info-removal/subversion/svn/svn.c:1467420-1468159 +/subversion/branches/1.8.x-tristate-chunked-request/subversion/svn/svn.c:1502435-1503894 +/subversion/branches/10Gb/subversion/svn/svn.c: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/subversion/svn/svn.c:965046-1000689 +/subversion/branches/auto-props-sdc/subversion/svn/svn.c:1384106-1401643 +/subversion/branches/bdb-reverse-deltas/subversion/svn/svn.c:872050-872529 +/subversion/branches/diff-callbacks3/subversion/svn/svn.c:870059-870761 +/subversion/branches/diff-optimizations/subversion/svn/svn.c:1031270-1037352 +/subversion/branches/diff-optimizations-bytes/subversion/svn/svn.c:1037353-1067789 +/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/svn/svn.c:870728-871118 +/subversion/branches/double-delete/subversion/svn/svn.c:870511-872970 +/subversion/branches/ev2-export/subversion/svn/svn.c:1325914,1332738,1413107 +/subversion/branches/explore-wc/subversion/svn/svn.c: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/subversion/svn/svn.c:871779-873302 +/subversion/branches/fs-rep-sharing/subversion/svn/svn.c:869036-873803 +/subversion/branches/fsfs-pack/subversion/svn/svn.c:873717-874575 +/subversion/branches/gnome-keyring/subversion/svn/svn.c:870558-871410 +/subversion/branches/gpg-agent-password-store/subversion/svn/svn.c:1005036-1150766 +/subversion/branches/http-protocol-v2/subversion/svn/svn.c:874395-876041 +/subversion/branches/in-memory-cache/subversion/svn/svn.c:869829-871452 +/subversion/branches/in-repo-authz/subversion/svn/svn.c:1414342-1424779 +/subversion/branches/inheritable-props/subversion/svn/svn.c:1297080-1395089 +/subversion/branches/integrate-cache-item-serialization/subversion/svn/svn.c:1068724-1068739 +/subversion/branches/integrate-cache-membuffer/subversion/svn/svn.c:998649-998852 +/subversion/branches/integrate-compression-level/subversion/svn/svn.c:1068651-1072287 +/subversion/branches/integrate-io-improvements/subversion/svn/svn.c:1068684-1072297 +/subversion/branches/integrate-is-cachable/subversion/svn/svn.c:1072568-1074082 +/subversion/branches/integrate-partial-getter/subversion/svn/svn.c:1072558-1076552 +/subversion/branches/integrate-readline-speedup/subversion/svn/svn.c:1072553-1072555 +/subversion/branches/integrate-stream-api-extensions/subversion/svn/svn.c:1068695-1072516 +/subversion/branches/integrate-string-improvements/subversion/svn/svn.c:1068251-1190617 +/subversion/branches/integrate-txdelta-caching/subversion/svn/svn.c:1072541-1078213 +/subversion/branches/issue-2779-dev/subversion/svn/svn.c:965496-984198 +/subversion/branches/issue-2843-dev/subversion/svn/svn.c:871432-874179 +/subversion/branches/issue-3000/subversion/svn/svn.c:871713,871716-871719,871721-871726,871728,871734 +/subversion/branches/issue-3067-deleted-subtrees/subversion/svn/svn.c:873375-874084 +/subversion/branches/issue-3148-dev/subversion/svn/svn.c:875193-875204 +/subversion/branches/issue-3220-dev/subversion/svn/svn.c:872210-872226 +/subversion/branches/issue-3242-dev/subversion/svn/svn.c:879653-896436 +/subversion/branches/issue-3334-dirs/subversion/svn/svn.c:875156-875867 +/subversion/branches/issue-3975/subversion/svn/svn.c:1152931-1160746 +/subversion/branches/issue-4116-dev/subversion/svn/svn.c:1424719-1425040 +/subversion/branches/issue-4194-dev/subversion/svn/svn.c:1410507-1414880 +/subversion/branches/javahl-ra/subversion/svn/svn.c:1342682,1344977 +/subversion/branches/kwallet/subversion/svn/svn.c:870785-871314 +/subversion/branches/log-g-performance/subversion/svn/svn.c:870941-871032 +/subversion/branches/merge-skips-obstructions/subversion/svn/svn.c:874525-874615 +/subversion/branches/multi-layer-moves/subversion/svn/svn.c:1239019-1300930 +/subversion/branches/nfc-nfd-aware-client/subversion/svn/svn.c:870276,870376 +/subversion/branches/node_pool/subversion/svn/svn.c:1304828-1305388 +/subversion/branches/performance/subversion/svn/svn.c: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,10293 39-1029340,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/subversion/svn/svn.c:956579-1033052 +/subversion/branches/ra_serf-digest-authn/subversion/svn/svn.c:875693-876404 +/subversion/branches/reintegrate-improvements/subversion/svn/svn.c:873853-874164 +/subversion/branches/revprop-cache/subversion/svn/svn.c:1298521-1326293 +/subversion/branches/revprop-packing/subversion/svn/svn.c:1143907,1143971,1143997,1144017,1144499,1144568,1146145 +/subversion/branches/subtree-mergeinfo/subversion/svn/svn.c:876734-878766 +/subversion/branches/svn-mergeinfo-enhancements/subversion/svn/svn.c:870119-870195,870197-870288 +/subversion/branches/svn-patch-improvements/subversion/svn/svn.c:918519-934609 +/subversion/branches/svn_mutex/subversion/svn/svn.c:1141683-1182099 +/subversion/branches/svnpatch-diff/subversion/svn/svn.c:865738-876477 +/subversion/branches/svnraisetc/subversion/svn/svn.c:874709-875149 +/subversion/branches/svnserve-logging/subversion/svn/svn.c:869828-870893 +/subversion/branches/tc-issue-3334/subversion/svn/svn.c:874697-874773 +/subversion/branches/tc-merge-notify/subversion/svn/svn.c:874017-874062 +/subversion/branches/tc-resolve/subversion/svn/svn.c:874191-874239 +/subversion/branches/tc_url_rev/subversion/svn/svn.c:874351-874483 +/subversion/branches/tree-conflicts/subversion/svn/svn.c:868291-873154 +/subversion/branches/tree-conflicts-notify/subversion/svn/svn.c:873926-874008 +/subversion/branches/tristate-chunked-request/subversion/svn/svn.c:1502401,1502673 +/subversion/branches/tweak-build-take-two/subversion/svn/svn.c:1424288-1425049,1425051-1425613 +/subversion/branches/uris-as-urls/subversion/svn/svn.c:1060426-1064427 +/subversion/branches/verify-at-commit/subversion/svn/svn.c:1462039-1462408 +/subversion/branches/wc-collate-path/subversion/svn/svn.c:1407642 +/subversion/trunk/subversion/svn/svn.c: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,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,1487094,1488183,1488267,1488294,1488425,1488639,1488693,1488878,1489114,1489116-1489117,1489203,1489339,1489935,1490045,1490326,1490679,1490684,1490721,1491432,1491499,1491707,1491739,1491755-1491756,1491762,1491770,1491816,1491868,1492005,1492020,1492145,1492148,1492152,1492164,1492264,1492295,1493424,1493475,1493703,1493720,1493951,1494089,1494171,1494223,1494287,1494298,1494318,1494342,1494657,1494913,1494967,1495063,1495104,1495204,1495209,1495214,1495256,1495329,1495428,1495432,149 5446,1495597,1495805,1495850,1495978,1496007,1496110-1496111,1496132,1496151,1496470,1496938,1496957,1497002,1497310,1497318-1497319,1497551,1497804,1497975,1497980,1498012,1498136,1498449,1498455-1498456,1498483-1498484,1498486,1498550,1498564,1498851,1498885,1498997,1499034,1499064,1499095-1499096,1499100,1499403,1499423,1499438,1499447,1499460,1499483,1499492,1499496,1499498,1499595,1499727,1500074,1500175,1500226,1500680,1500695,1500762,1500799,1500801-1500802,1500904,1500928,1502097,1502577,1502909,1502952,1503009-1503010,1503528,1503884 Modified: subversion/branches/javahl-1.8-extensions/subversion/svn/util.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/svn/util.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/svn/util.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/svn/util.c Fri Jul 26 01:03:26 2013 @@ -1012,19 +1012,6 @@ svn_cl__local_style_skip_ancestor(const return svn_dirent_local_style(relpath ? relpath : path, pool); } -/* Return a string of the form "PATH_OR_URL@REVISION". */ -static const char * -path_for_display(const char *path_or_url, - const svn_opt_revision_t *revision, - apr_pool_t *pool) -{ - const char *rev_str = svn_opt__revision_to_string(revision, pool); - - if (! svn_path_is_url(path_or_url)) - path_or_url = svn_dirent_local_style(path_or_url, pool); - return apr_psprintf(pool, "%s@%s", path_or_url, rev_str); -} - svn_error_t * svn_cl__propset_print_binary_mime_type_warning(apr_array_header_t *targets, const char *propname, Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/lock_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/lock_tests.py?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/lock_tests.py (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/lock_tests.py Fri Jul 26 01:03:26 2013 @@ -1840,6 +1840,56 @@ def commit_stolen_lock(sbox): err_re, wc_dir) +# When removing directories, the locks of contained files were not +# correctly removed from the working copy database, thus they later +# magically reappeared when new files or directories with the same +# pathes were added. +@Issue(4364) +def drop_locks_on_parent_deletion(sbox): + "drop locks when the parent is deleted" + + sbox.build() + wc_dir = sbox.wc_dir + + # lock some files, and remove them. + sbox.simple_lock('A/B/lambda') + sbox.simple_lock('A/B/E/alpha') + sbox.simple_lock('A/B/E/beta') + sbox.simple_rm('A/B') + + expected_status = svntest.actions.get_virginal_state(wc_dir, 1) + expected_status.remove_subtree('A/B') + + svntest.actions.run_and_verify_commit(wc_dir, + [], + expected_status, + None, + wc_dir) + + # now re-add entities to the deleted pathes. + sbox.simple_mkdir('A/B') + sbox.simple_add_text('new file replacing old file', 'A/B/lambda') + sbox.simple_add_text('file replacing former dir', 'A/B/F') + # The bug also resurrected locks on directories when their path + # matched a former file. + sbox.simple_mkdir('A/B/E', 'A/B/E/alpha') + + expected_status = svntest.actions.get_virginal_state(wc_dir, 1) + expected_status.tweak('A/B', + 'A/B/E', + 'A/B/E/alpha', + 'A/B/F', + 'A/B/lambda', + wc_rev='3') + expected_status.remove('A/B/E/beta') + + svntest.actions.run_and_verify_commit(wc_dir, + [], + expected_status, + None, + wc_dir) + + ######################################################################## # Run the tests @@ -1892,6 +1942,7 @@ test_list = [ None, locks_stick_over_switch, lock_unlock_deleted, commit_stolen_lock, + drop_locks_on_parent_deletion, ] if __name__ == '__main__': Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/wc_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/wc_tests.py?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/wc_tests.py (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/cmdline/wc_tests.py Fri Jul 26 01:03:26 2013 @@ -200,6 +200,25 @@ def cleanup_below_wc_root(sbox): svntest.actions.run_and_verify_svn("Cleanup below wc root", None, [], "cleanup", sbox.ospath("A")) +@SkipUnless(svntest.main.is_posix_os) +@Issue(4383) +def update_through_unversioned_symlink(sbox): + """update through unversioned symlink""" + + sbox.build(read_only = True) + wc_dir = sbox.wc_dir + state = svntest.actions.get_virginal_state(wc_dir, 1) + symlink = sbox.get_tempname() + os.symlink(os.path.abspath(sbox.wc_dir), symlink) + expected_output = [] + expected_disk = [] + expected_status = [] + # Subversion 1.8.0 crashes when updating a working copy through a symlink + svntest.actions.run_and_verify_update(wc_dir, expected_output, + expected_disk, expected_status, + None, None, None, None, None, 1, + symlink) + ######################################################################## # Run the tests @@ -218,6 +237,7 @@ test_list = [ None, status_without_wc_db_and_entries, status_with_missing_wc_db_and_maybe_valid_entries, cleanup_below_wc_root, + update_through_unversioned_symlink, ] if __name__ == '__main__': Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_fs/fs-test.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_fs/fs-test.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_fs/fs-test.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_fs/fs-test.c Fri Jul 26 01:03:26 2013 @@ -27,6 +27,7 @@ #include "../svn_test.h" +#include "svn_hash.h" #include "svn_pools.h" #include "svn_time.h" #include "svn_string.h" @@ -4946,12 +4947,14 @@ filename_trailing_newline(const svn_test svn_fs_root_t *txn_root, *root; svn_revnum_t youngest_rev = 0; svn_error_t *err; - svn_boolean_t allow_newlines; + svn_boolean_t legacy_backend; + static const char contents[] = "foo\003bar"; - /* Some filesystem implementations can handle newlines in filenames - * and can be white-listed here. - * Currently, only BDB supports \n in filenames. */ - allow_newlines = (strcmp(opts->fs_type, "bdb") == 0); + /* The FS API wants \n to be permitted, but FSFS never implemented that, + * so for FSFS we expect errors rather than successes in some of the commits. + * Use a blacklist approach so that new FSes default to implementing the API + * as originally defined. */ + legacy_backend = (!strcmp(opts->fs_type, SVN_FS_TYPE_FSFS)); SVN_ERR(svn_test__create_fs(&fs, "test-repo-filename-trailing-newline", opts, pool)); @@ -4969,17 +4972,59 @@ filename_trailing_newline(const svn_test SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool)); SVN_ERR(svn_fs_revision_root(&root, fs, youngest_rev, subpool)); err = svn_fs_copy(root, "/foo", txn_root, "/bar\n", subpool); - if (allow_newlines) + if (!legacy_backend) SVN_TEST_ASSERT(err == SVN_NO_ERROR); else SVN_TEST_ASSERT_ERROR(err, SVN_ERR_FS_PATH_SYNTAX); /* Attempt to create a file /foo/baz\n. This should fail on FSFS. */ err = svn_fs_make_file(txn_root, "/foo/baz\n", subpool); - if (allow_newlines) + if (!legacy_backend) SVN_TEST_ASSERT(err == SVN_NO_ERROR); else SVN_TEST_ASSERT_ERROR(err, SVN_ERR_FS_PATH_SYNTAX); + + + /* Create another file, with contents. */ + if (!legacy_backend) + { + SVN_ERR(svn_fs_make_file(txn_root, "/bar\n/baz\n", subpool)); + SVN_ERR(svn_test__set_file_contents(txn_root, "bar\n/baz\n", + contents, pool)); + } + + if (!legacy_backend) + { + svn_revnum_t after_rev; + static svn_test__tree_entry_t expected_entries[] = { + { "foo", NULL }, + { "bar\n", NULL }, + { "foo/baz\n", "" }, + { "bar\n/baz\n", contents }, + { NULL, NULL } + }; + const char *expected_changed_paths[] = { + "/bar\n", + "/foo/baz\n", + "/bar\n/baz\n", + NULL + }; + apr_hash_t *expected_changes = apr_hash_make(pool); + int i; + + SVN_ERR(svn_fs_commit_txn(NULL, &after_rev, txn, subpool)); + SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev)); + + /* Validate the DAG. */ + SVN_ERR(svn_fs_revision_root(&root, fs, after_rev, pool)); + SVN_ERR(svn_test__validate_tree(root, expected_entries, 4, pool)); + + /* Validate changed-paths, where the problem originally occurred. */ + for (i = 0; expected_changed_paths[i]; i++) + svn_hash_sets(expected_changes, expected_changed_paths[i], + "undefined value"); + SVN_ERR(svn_test__validate_changes(root, expected_changes, pool)); + } return SVN_NO_ERROR; } Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_subr/config-test.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_subr/config-test.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_subr/config-test.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_subr/config-test.c Fri Jul 26 01:03:26 2013 @@ -336,6 +336,22 @@ test_stream_interface(apr_pool_t *pool) return SVN_NO_ERROR; } +static svn_error_t * +test_ignore_bom(apr_pool_t *pool) +{ + svn_config_t *cfg; + svn_string_t *cfg_string = svn_string_create("\xEF\xBB\xBF[s1]\nfoo=bar\n", + pool); + svn_stream_t *stream = svn_stream_from_string(cfg_string, pool); + + SVN_ERR(svn_config_parse(&cfg, stream, TRUE, TRUE, pool)); + + if (! svn_config_has_section(cfg, "s1")) + return fail(pool, "failed to find section s1"); + + return SVN_NO_ERROR; +} + /* ==================================================================== If you add a new test to this file, update this array. @@ -359,5 +375,6 @@ struct svn_test_descriptor_t test_funcs[ "test case-sensitive option name lookup"), SVN_TEST_PASS2(test_stream_interface, "test svn_config_parse"), + SVN_TEST_PASS2(test_ignore_bom, "test parsing config file with BOM"), SVN_TEST_NULL }; Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_wc/op-depth-test.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_wc/op-depth-test.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_wc/op-depth-test.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/libsvn_wc/op-depth-test.c Fri Jul 26 01:03:26 2013 @@ -1109,6 +1109,7 @@ base_dir_insert_remove(svn_test__sandbox SVN_ERR(svn_wc__db_base_remove(b->wc_ctx->db, dir_abspath, FALSE /* keep_as_Working */, FALSE /* queue_deletes */, + FALSE /* remove_locks */, SVN_INVALID_REVNUM, NULL, NULL, b->pool)); SVN_ERR(svn_wc__wq_run(b->wc_ctx->db, dir_abspath, Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.c?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.c (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.c Fri Jul 26 01:03:26 2013 @@ -516,6 +516,42 @@ svn_test__validate_tree(svn_fs_root_t *r svn_error_t * +svn_test__validate_changes(svn_fs_root_t *root, + apr_hash_t *expected, + apr_pool_t *pool) +{ + apr_hash_t *actual; + apr_hash_index_t *hi; + + SVN_ERR(svn_fs_paths_changed2(&actual, root, pool)); + +#if 0 + /* Print ACTUAL and EXPECTED. */ + { + int i; + for (i=0, hi = apr_hash_first(pool, expected); hi; hi = apr_hash_next(hi)) + SVN_DBG(("expected[%d] = '%s'\n", i++, svn__apr_hash_index_key(hi))); + for (i=0, hi = apr_hash_first(pool, actual); hi; hi = apr_hash_next(hi)) + SVN_DBG(("actual[%d] = '%s'\n", i++, svn__apr_hash_index_key(hi))); + } +#endif + + for (hi = apr_hash_first(pool, expected); hi; hi = apr_hash_next(hi)) + if (NULL == svn_hash_gets(actual, svn__apr_hash_index_key(hi))) + return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, + "Path '%s' missing from actual changed-paths", + svn__apr_hash_index_key(hi)); + + for (hi = apr_hash_first(pool, actual); hi; hi = apr_hash_next(hi)) + if (NULL == svn_hash_gets(expected, svn__apr_hash_index_key(hi))) + return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, + "Path '%s' missing from expected changed-paths", + svn__apr_hash_index_key(hi)); + + return SVN_NO_ERROR; +} + +svn_error_t * svn_test__txn_script_exec(svn_fs_root_t *txn_root, svn_test__txn_script_command_t *script, int num_edits, Modified: subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.h URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.h?rev=1507168&r1=1507167&r2=1507168&view=diff ============================================================================== --- subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.h (original) +++ subversion/branches/javahl-1.8-extensions/subversion/tests/svn_test_fs.h Fri Jul 26 01:03:26 2013 @@ -112,6 +112,14 @@ svn_test__validate_tree(svn_fs_root_t *r int num_entries, apr_pool_t *pool); +/* Verify that svn_fs_paths_changed2(ROOT) returns a hash with exactly + the same keys as EXPECTED_KEYS. Values are not currently verified. + */ +svn_error_t * +svn_test__validate_changes(svn_fs_root_t *root, + apr_hash_t *expected_keys, + apr_pool_t *pool); + /* Structure for describing script-ish commands to perform on a transaction using svn_test__txn_script_exec(). */ typedef struct svn_test__txn_script_command_t
