You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ne...@apache.org on 2010/02/05 15:51:12 UTC
svn commit: r906957 - in /subversion/trunk/subversion: include/svn_wc.h
libsvn_wc/update_editor.c tests/cmdline/update_tests.py
Author: neels
Date: Fri Feb 5 14:51:12 2010
New Revision: 906957
URL: http://svn.apache.org/viewvc?rev=906957&view=rev
Log:
Cosmetic.
* subversion/include/svn_wc.h
(svn_wc_conflict_version_create):
Whitespace typo before PATH_IN_REPOS.
* subversion/libsvn_wc/update_editor.c
(make_dir_baton):
Comment.
(check_tree_conflict, add_directory):
Enforce 80 chars width.
(close_directory):
Whitespace after 'while'.
(add_file):
Comment lists current 'default:' cases for context.
* subversion/tests/cmdline/update_tests.py
(update_delete_modified_files, update_after_add_rm_deleted,
obstructed_update_alters_wc_props, update_replace_dir, update_single_file,
another_hudson_problem, update_deleted_targets, new_dir_with_spaces,
non_recursive_update, update_to_deletion, update_deletion_inside_out,
update_schedule_add_dir, update_to_future_add, nested_in_read_only,
update_xml_unsafe_dir, conflict_markers_matching_eol,
update_eolstyle_handling, update_wc_with_replaced_file,
update_with_obstructing_additions, update_conflicted,
mergeinfo_update_elision, update_handles_copyfrom,
copyfrom_degrades_gracefully, update_copied_from_replaced_and_changed,
update_copied_and_deleted_prop, restarted_update_should_delete_dir_prop,
tree_conflicts_on_update_1_2, tree_conflicts_on_update_2_2,
tree_conflicts_on_update_3, update_moves_and_modifies_an_edited_file,
tree_conflict_uc1_update_deleted_tree,
set_deep_depth_on_target_with_shallow_children,
update_deleted_locked_files):
In a quite unnecessary act of selflessness and perfectionism, introduce
blank lines to separate code blocks that create expected_* structures from
each other and from 'svn' invocations, for better readability.
(update_wc_on_windows_drive): Same as above, and fix an indentation.
(update_handles_copyfrom_with_txdeltas):
Same blank lines, and fix a line >80 chars width.
Modified:
subversion/trunk/subversion/include/svn_wc.h
subversion/trunk/subversion/libsvn_wc/update_editor.c
subversion/trunk/subversion/tests/cmdline/update_tests.py
Modified: subversion/trunk/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_wc.h?rev=906957&r1=906956&r2=906957&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_wc.h (original)
+++ subversion/trunk/subversion/include/svn_wc.h Fri Feb 5 14:51:12 2010
@@ -1523,7 +1523,7 @@
*/
svn_wc_conflict_version_t *
svn_wc_conflict_version_create(const char *repos_url,
- const char* path_in_repos,
+ const char *path_in_repos,
svn_revnum_t peg_rev,
svn_node_kind_t node_kind,
apr_pool_t *pool);
Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/update_editor.c?rev=906957&r1=906956&r2=906957&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/trunk/subversion/libsvn_wc/update_editor.c Fri Feb 5 14:51:12 2010
@@ -553,6 +553,7 @@
}
else
{
+ /* This is the root baton. */
d->name = NULL;
d->local_abspath = eb->anchor_abspath;
}
@@ -1824,7 +1825,8 @@
/* If this is a 'switch' operation, try to construct the switch
* target's REPOS_RELPATH. */
if (their_url != NULL)
- right_repos_relpath = svn_uri_is_child(repos_root_url, their_url, pool);
+ right_repos_relpath = svn_uri_is_child(repos_root_url, their_url,
+ pool);
else
{
/* The complete source-right URL is not available, but it
@@ -2701,10 +2703,9 @@
if (status == svn_wc__db_status_added)
{
/* Specialize the added case to added, copied, moved */
- SVN_ERR(svn_wc__db_scan_addition(&status, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL,
- eb->db, db->local_abspath,
- pool, pool));
+ SVN_ERR(svn_wc__db_scan_addition(&status, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, eb->db,
+ db->local_abspath, pool, pool));
}
switch (status)
@@ -3318,7 +3319,7 @@
}
bdi = db->bump_info;
- while(bdi && !bdi->ref_count)
+ while (bdi && !bdi->ref_count)
{
apr_pool_t *destroy_pool = bdi->pool;
bdi = bdi->parent;
@@ -4038,6 +4039,13 @@
fb->add_existed = TRUE;
break;
default:
+ /* svn_wc__db_status_normal,
+ * svn_wc__db_status_moved_here,
+ * svn_wc__db_status_copied,
+ * svn_wc__db_status_deleted,
+ * svn_wc__db_status_incomplete,
+ * svn_wc__db_status_base_deleted
+ */
{
svn_wc_conflict_description2_t *tree_conflict = NULL;
Modified: subversion/trunk/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/update_tests.py?rev=906957&r1=906956&r2=906957&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/update_tests.py Fri Feb 5 14:51:12 2010
@@ -668,6 +668,7 @@
'A/B/E/alpha' : Item(status=' ', treeconflict='C'),
'A/D/G' : Item(status=' ', treeconflict='C'),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.tweak('A/B/E/alpha',
contents=\
@@ -716,9 +717,11 @@
'A/B/E/alpha' : Item(verb='Deleting'),
'A/B/F' : Item(verb='Deleting'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove('A/B/E/alpha')
expected_status.remove('A/B/F')
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -733,6 +736,7 @@
'A/B/E/alpha' : Item(status='A ', wc_rev=0),
'A/B/F' : Item(status='A ', wc_rev=0),
})
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Forced removal of new alpha and F must restore "deleted" state
@@ -744,15 +748,18 @@
# "deleted" state is not visible in status
expected_status.remove('A/B/E/alpha', 'A/B/F')
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Although parent dir is already at rev 1, the "deleted" state will cause
# alpha and F to be restored in the WC when updated to rev 1
svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r', '1', wc_dir)
+
expected_status.add({
'A/B/E/alpha' : Item(status=' ', wc_rev=1),
'A/B/F' : Item(status=' ', wc_rev=1),
})
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
#----------------------------------------------------------------------
@@ -803,14 +810,17 @@
expected_output = svntest.wc.State(wc_dir, {
'A/foo' : Item(status='A '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.add({
'A/foo' : Item(),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.add({
'A/foo' : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -837,8 +847,10 @@
expected_output = svntest.wc.State(wc_dir, {
'A/B/F' : Item(verb='Deleting'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove('A/B/F')
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -849,16 +861,21 @@
expected_output = svntest.wc.State(wc_dir, {
'A/B/F' : Item(verb='Adding'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('A/B/F', wc_rev=3)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# Update to HEAD
expected_output = svntest.wc.State(wc_dir, {
})
+
expected_disk = svntest.main.greek_state.copy()
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -880,7 +897,9 @@
# Update to revision 1 replaces the directory
svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r', '1', wc_dir)
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
#----------------------------------------------------------------------
@@ -901,8 +920,10 @@
expected_output = svntest.wc.State(wc_dir, {
'A/mu' : Item(verb='Sending'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('A/mu', wc_rev=2)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -916,6 +937,7 @@
os.chdir(was_cwd)
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
#----------------------------------------------------------------------
@@ -1084,11 +1106,14 @@
# Delete/commit gamma thus making it 'deleted'
gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
svntest.main.run_svn(None, 'rm', gamma_path)
+
expected_output = svntest.wc.State(wc_dir, {
'A/D/gamma' : Item(verb='Deleting'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove('A/D/gamma')
+
svntest.actions.run_and_verify_commit(wc_dir,
expected_output,
expected_status,
@@ -1123,6 +1148,7 @@
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('A/D/G', 'A/D/G/pi', 'A/D/G/rho', 'A/D/G/tau',
'A/D/gamma')
+
svntest.actions.run_and_verify_update(wc_dir,
"",
expected_disk,
@@ -1139,12 +1165,15 @@
gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
F_path = os.path.join(wc_dir, 'A', 'B', 'F')
svntest.main.run_svn(None, 'rm', gamma_path, F_path)
+
expected_output = svntest.wc.State(wc_dir, {
'A/D/gamma' : Item(verb='Deleting'),
'A/B/F' : Item(verb='Deleting'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove('A/D/gamma', 'A/B/F')
+
svntest.actions.run_and_verify_commit(wc_dir,
expected_output,
expected_status,
@@ -1162,8 +1191,11 @@
'A/D/gamma' : Item(status='A '),
'A/B/F' : Item(status='A '),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
expected_disk = svntest.main.greek_state.copy()
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -1192,10 +1224,12 @@
expected_output = svntest.wc.State(wc_dir, {
'A/spacey dir' : Item(status='A '),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.add({
'A/spacey dir' : Item(status=' ', wc_rev=2),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.add({
'A/spacey dir' : Item(),
@@ -1217,14 +1251,18 @@
# Commit a change to A/mu and A/D/G/rho
mu_path = os.path.join(wc_dir, 'A', 'mu')
rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+
svntest.main.file_append(mu_path, "new")
svntest.main.file_append(rho_path, "new")
+
expected_output = svntest.wc.State(wc_dir, {
'A/mu' : Item(verb='Sending'),
'A/D/G/rho' : Item(verb='Sending'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('A/mu', 'A/D/G/rho', wc_rev=2)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status,
None, wc_dir)
@@ -1234,8 +1272,11 @@
'A/mu' : Item(status='U '),
'A/D/G/rho' : Item(status='U '),
})
+
expected_disk = svntest.main.greek_state.copy()
+
expected_status.tweak('A/mu', 'A/D/G/rho', wc_rev=1)
+
svntest.actions.run_and_verify_update(wc_dir, expected_output,
expected_disk, expected_status,
None, None, None, None, None, 0,
@@ -1243,11 +1284,15 @@
# Non-recursive update of A should change A/mu but not A/D/G/rho
A_path = os.path.join(wc_dir, 'A')
+
expected_output = svntest.wc.State(wc_dir, {
'A/mu' : Item(status='U '),
})
+
expected_status.tweak('A', 'A/mu', wc_rev=2)
+
expected_disk.tweak('A/mu', contents="This is the file 'mu'.\nnew")
+
svntest.actions.run_and_verify_update(wc_dir, expected_output,
expected_disk, expected_status,
None, None, None, None, None, 0,
@@ -1288,6 +1333,7 @@
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status='D '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('iota')
@@ -1302,6 +1348,7 @@
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status='A '),
})
+
expected_disk = svntest.main.greek_state.copy()
svntest.actions.run_and_verify_update(wc_dir,
@@ -1341,6 +1388,7 @@
expected_output = svntest.wc.State(wc_dir, {
'A/B' : Item(status='D '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('A/B', 'A/B/lambda', 'A/B/F',
'A/B/E', 'A/B/E/alpha', 'A/B/E/beta')
@@ -1371,10 +1419,13 @@
expected_output = svntest.wc.State(wc_dir, {
'A/D/G' : Item(status='D '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('A/D/G', 'A/D/G/pi', 'A/D/G/rho', 'A/D/G/tau')
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.remove('A/D/G', 'A/D/G/pi', 'A/D/G/rho', 'A/D/G/tau')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -1393,6 +1444,7 @@
'A/D/G/rho' : Item(status=' ', copied='+', wc_rev='-'),
'A/D/G/tau' : Item(status=' ', copied='+', wc_rev='-'),
})
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Now update with the schedule-add dir as the target.
@@ -1433,9 +1485,11 @@
# Update iota to the current HEAD.
iota_path = os.path.join(wc_dir, 'iota')
+
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status='A '),
})
+
expected_disk = svntest.wc.State('', {
'iota' : Item("This is the file 'iota'.\n")
})
@@ -1471,6 +1525,7 @@
'A/D/H/psi' : Item(status='A '),
'A/D/H/omega' : Item(status='A ')
})
+
expected_disk = svntest.main.greek_state.copy()
svntest.actions.run_and_verify_update(wc_dir,
@@ -1491,29 +1546,40 @@
# Delete/commit a file
alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
svntest.actions.run_and_verify_svn(None, None, [], 'rm', alpha_path)
+
expected_output = svntest.wc.State(wc_dir, {
'A/B/E/alpha' : Item(verb='Deleting'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove('A/B/E/alpha')
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
+
svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+
expected_status.tweak(wc_rev=2)
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Delete/commit a directory that used to contain the deleted file
B_path = os.path.join(wc_dir, 'A', 'B')
svntest.actions.run_and_verify_svn(None, None, [], 'rm', B_path)
+
expected_output = svntest.wc.State(wc_dir, {
'A/B' : Item(verb='Deleting'),
})
+
expected_status.remove('A/B', 'A/B/lambda', 'A/B/E', 'A/B/E/beta', 'A/B/F')
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+
expected_status.tweak(wc_rev=3)
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Replace the deleted directory with a new checkout of an old
@@ -1523,6 +1589,7 @@
svntest.actions.run_and_verify_svn(None, None, [],
'checkout', '-r', '1', B_url + "@1",
B_path)
+
expected_status = svntest.wc.State(B_path, {
'' : Item(),
'lambda' : Item(),
@@ -1532,6 +1599,7 @@
'F' : Item(),
})
expected_status.tweak(wc_rev=1, status=' ')
+
svntest.actions.run_and_verify_status(B_path, expected_status)
# Make enclosing wc read only
@@ -1542,14 +1610,17 @@
expected_output = svntest.wc.State(B_path, {
'E/alpha' : Item(status='D '),
})
+
expected_disk = wc.State('', {
'lambda' : wc.StateItem("This is the file 'lambda'.\n"),
'E' : wc.StateItem(),
'E/beta' : wc.StateItem("This is the file 'beta'.\n"),
'F' : wc.StateItem(),
})
+
expected_status.remove('E/alpha')
expected_status.tweak(wc_rev=2)
+
svntest.actions.run_and_verify_update(B_path,
expected_output,
expected_disk,
@@ -1596,11 +1667,14 @@
expected_output = wc.State('', {
})
+
expected_disk = wc.State('', {
})
+
expected_status = wc.State('', {
'' : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_update('', expected_output, expected_disk,
expected_status)
@@ -1650,9 +1724,11 @@
expected_disk.add({
'A/mu' : Item("This is the file 'mu'." + eolchar)
})
+
expected_output = svntest.wc.State(wc_dir, {
'A/mu' : Item(verb='Sending'),
})
+
expected_status.tweak(wc_rev = cur_rev)
expected_status.add({
'A/mu' : Item(status=' ', wc_rev = cur_rev + 1),
@@ -1772,9 +1848,11 @@
expected_backup_disk.tweak(
'A/mu', contents= "This is the file 'mu'." + crlf +
"Added new line of text." + crlf)
+
expected_backup_output = svntest.wc.State(wc_backup, {
'A/mu' : Item(status='GU'),
})
+
expected_backup_status = svntest.actions.get_virginal_state(wc_backup, 2)
expected_backup_status.tweak('A/mu', status='M ')
@@ -1796,11 +1874,14 @@
'A/mu' : Item(contents= "This is the file 'mu'.\015" +
"Added new line of text.\015")
})
+
expected_backup_output = svntest.wc.State(wc_backup, {
'A/mu' : Item(status='GU'),
})
+
expected_backup_status = svntest.actions.get_virginal_state(wc_backup, 3)
expected_backup_status.tweak('A/mu', status='M ')
+
svntest.actions.run_and_verify_update(wc_backup,
expected_backup_output,
expected_backup_disk,
@@ -1819,9 +1900,11 @@
'A/mu' : Item(contents= "This is the file 'mu'.\015" +
"Added new line of text.\015")
})
+
expected_backup_output = svntest.wc.State(wc_backup, {
'A/mu' : Item(status=' U'),
})
+
expected_backup_status = svntest.actions.get_virginal_state(wc_backup, 4)
expected_backup_status.tweak('A/mu', status='M ')
svntest.actions.run_and_verify_update(wc_backup,
@@ -2160,11 +2243,13 @@
'A/mu' : Item(verb='Sending'),
'zeta' : Item(verb='Adding'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('A/mu', wc_rev=2)
expected_status.add({
'zeta' : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None,
wc_dir, zeta_path)
@@ -2181,10 +2266,12 @@
'dir1' : Item(verb='Adding'),
'dir1/file1' : Item(verb='Adding'),
})
+
expected_status.add({
- 'dir1' : Item(status=' ', wc_rev=3),
- 'dir1/file1' : Item(status=' ', wc_rev=3),
- })
+ 'dir1' : Item(status=' ', wc_rev=3),
+ 'dir1/file1' : Item(status=' ', wc_rev=3),
+ })
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None,
'-N',
@@ -2195,12 +2282,15 @@
os.chdir(wc_dir)
expected_disk = svntest.main.greek_state.copy()
+
expected_output = svntest.wc.State('', {
'A/mu' : Item(status='U '),
'zeta' : Item(status='D '),
'dir1' : Item(status='D '),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2212,24 +2302,28 @@
# update to the latest version, but use the relative path 'X:'
wc_dir = drive + ":"
+
expected_output = svntest.wc.State(wc_dir, {
'A/mu' : Item(status='U '),
'zeta' : Item(status='A '),
'dir1' : Item(status='A '),
'dir1/file1' : Item(status='A '),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
expected_status.add({
'dir1' : Item(status=' ', wc_rev=3),
'dir1/file1' : Item(status=' ', wc_rev=3),
'zeta' : Item(status=' ', wc_rev=3),
})
+
expected_disk.add({
'zeta' : Item("This is the file 'zeta'\n"),
'dir1/file1': Item("This is the file 'file1'\n"),
})
expected_disk.tweak('A/mu', contents = expected_disk.desc['A/mu'].contents
+ '\nAppended text for mu')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2267,6 +2361,7 @@
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('iota', status='R ', wc_rev='1')
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Now update the wc. The local replacement is a tree conflict with
@@ -2274,13 +2369,17 @@
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status=' ', treeconflict='C'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.add({
'iota' : Item(status='R ', wc_rev='2', treeconflict='C'),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.tweak('iota', contents="")
+
conflict_files = []
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2291,11 +2390,15 @@
# Make us a working copy with a 'replace-with-history' file.
svntest.main.run_svn(None, 'revert', iota_path)
+
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status='U '),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
expected_disk = svntest.main.greek_state.copy()
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2309,6 +2412,7 @@
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('iota', status='R ', copied='+', wc_rev='-')
+
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Now update the wc. The local replacement is a tree conflict with
@@ -2316,13 +2420,17 @@
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status=' ', treeconflict='C'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.add({
'iota' : Item(status='R ', wc_rev='-', treeconflict='C', copied='+'),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.tweak('iota', contents="This is the file 'mu'.\n")
+
conflict_files = [ ]
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2391,6 +2499,7 @@
svntest.main.file_append(xi_path, "This is the file 'xi'\n")
eta_path = os.path.join(J_path, 'eta')
svntest.main.file_append(eta_path, "This is REPOS file 'eta'\n")
+
svntest.main.run_svn(None, 'add', upsilon_path, nu_path,
kappa_path, epsilon_path, zeta_path, I_path)
@@ -2607,6 +2716,7 @@
expected_output = wc.State(A_path, {
'M' : Item(status=' ', treeconflict='C'),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.add({
'A/B/upsilon' : Item("This is the file 'upsilon'\n"),
@@ -2632,6 +2742,7 @@
'A/M/omega' : Item("This is the file 'omega'.\n"),
'omicron' : Item("This is the file 'chi'.\n"),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 4)
expected_status.tweak('', 'iota', wc_rev=1)
expected_status.add({
@@ -2660,10 +2771,12 @@
'A/M/omega' : Item(status=' ', copied='+', wc_rev='-'),
'omicron' : Item(status='A ', copied='+', wc_rev='-'),
})
+
svntest.actions.run_and_verify_update(wc_dir, expected_output,
expected_disk, expected_status,
None, None, None, None, None, False,
A_path)
+
# Resolve the tree conflict.
svntest.main.run_svn(None, 'resolve', '--accept', 'working', M_path)
@@ -2678,9 +2791,11 @@
expected_output = wc.State(wc_dir, {
'omicron' : Item(status=' ', treeconflict='C'),
})
+
expected_status.tweak('', 'iota', status=' ', wc_rev=4)
expected_status.tweak('omicron', status='A ', copied='+', wc_rev='-',
treeconflict='C')
+
### ugh. this update will leave the working copy in a BROKEN state.
### the incoming add is flagged as a tree conflict against our local-copy.
### the file will be "skipped" during the update, and the file will be
@@ -2696,6 +2811,7 @@
expected_disk, expected_status,
None, None, None, None, None, False,
wc_dir, '-N')
+
# Resolve the tree conflict.
svntest.main.run_svn(None, 'resolve', '--accept', 'working', omicron_path)
@@ -2716,6 +2832,7 @@
### the server returns with "you're up to date" rather than sending
### another add. thus, no conflict occurs on 'omicron'.
expected_output = wc.State(wc_dir, { })
+
expected_status.tweak('omicron', treeconflict=None)
# Again, --force shouldn't matter.
@@ -2739,10 +2856,14 @@
# Make some modifications to the files and a dir, creating r2.
svntest.main.file_append(iota_path, 'Original appended text for iota\n')
+
svntest.main.run_svn(None, 'propset', 'prop', 'val', lambda_path)
+
svntest.main.file_append(mu_path, 'Original appended text for mu\n')
+
svntest.main.run_svn(None, 'propset', 'prop', 'val', mu_path)
svntest.main.run_svn(None, 'propset', 'prop', 'val', D_path)
+
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(verb='Sending'),
'A/mu': Item(verb='Sending'),
@@ -2751,6 +2872,7 @@
})
expected_status.tweak('iota', 'A/mu', 'A/B/lambda', 'A/D', wc_rev=2)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -2759,12 +2881,17 @@
svntest.main.file_append(iota_path, 'Another line for iota\n')
svntest.main.file_append(mu_path, 'Another line for mu\n')
svntest.main.file_append(lambda_path, 'Another line for lambda\n')
+
svntest.main.run_svn(None, 'propset', 'prop', 'val2', D_path)
+
svntest.main.file_append(pi_path, 'Another line for pi\n')
+
expected_status.tweak('iota', 'A/mu', 'A/B/lambda', 'A/D', 'A/D/G/pi',
wc_rev=3)
+
expected_output.add({
'A/D/G/pi': Item(verb='Sending')})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -2776,8 +2903,11 @@
'A/D': Item(status=' U'),
'A/D/G/pi': Item(status='U '),
})
+
expected_disk = svntest.main.greek_state.copy()
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2801,6 +2931,7 @@
'A/mu': Item(status='CC'),
'A/D': Item(status=' C'),
})
+
expected_disk.tweak('iota',
contents="\n".join(["This is the file 'iota'.",
"<<<<<<< .mine",
@@ -2824,10 +2955,12 @@
expected_status.tweak('iota', status='C ')
expected_status.tweak('A/B/lambda', 'A/D', status=' C')
expected_status.tweak('A/mu', status='CC')
+
extra_files = [ [wc_dir, 'iota.*\.(r1|r2|mine)'],
[wc_dir, 'mu.*\.(r1|r2|mine|prej)'],
[wc_dir, 'lambda.*\.prej'],
[wc_dir, 'dir_conflicts.prej']]
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -2845,6 +2978,7 @@
'A/mu' : Item(verb='Skipped'),
'A/D' : Item(verb='Skipped'),
})
+
expected_status.tweak(wc_rev=3)
expected_status.tweak('iota', 'A/B/lambda', 'A/mu', 'A/D', wc_rev=2)
# We no longer update descendants of a prop-conflicted dir.
@@ -2902,6 +3036,7 @@
B_COPY_path)
expected_output = wc.State(wc_dir, {'A/B_COPY' : Item(verb='Adding')})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.add({
"A/B_COPY" : Item(status=' ', wc_rev=2),
@@ -2921,22 +3056,31 @@
# r3 - modify and commit A/B/E/beta
svntest.main.file_write(beta_path, "New content")
+
expected_output = wc.State(wc_dir, {'A/B/E/beta' : Item(verb='Sending')})
+
expected_status.tweak('A/B/E/beta', wc_rev=3)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# r4 - modify and commit A/B/lambda
svntest.main.file_write(lambda_path, "New content")
+
expected_output = wc.State(wc_dir, {'A/B/lambda' : Item(verb='Sending')})
+
expected_status.tweak('A/B/lambda', wc_rev=4)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# r5 - modify and commit A/B/E/alpha
svntest.main.file_write(alpha_path, "New content")
+
expected_output = wc.State(wc_dir, {'A/B/E/alpha' : Item(verb='Sending')})
+
expected_status.tweak('A/B/E/alpha', wc_rev=5)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -2946,11 +3090,14 @@
'E/alpha' : Item(status='U '),
'E/beta' : Item(status='U '),
})
+
expected_mergeinfo_output = wc.State(B_COPY_path, {
'' : Item(status=' U'),
})
+
expected_elision_output = wc.State(B_COPY_path, {
})
+
expected_merge_status = wc.State(B_COPY_path, {
'' : Item(status=' M', wc_rev=2),
'lambda' : Item(status='M ', wc_rev=2),
@@ -2959,6 +3106,7 @@
'E/beta' : Item(status='M ', wc_rev=2),
'F' : Item(status=' ', wc_rev=2),
})
+
expected_merge_disk = wc.State('', {
'' : Item(props={SVN_PROP_MERGEINFO : '/A/B:3-5'}),
'lambda' : Item("New content"),
@@ -2967,6 +3115,7 @@
'E/beta' : Item("New content"),
'F' : Item(),
})
+
expected_skip = wc.State(B_COPY_path, { })
svntest.actions.run_and_verify_merge(B_COPY_path, '2', '5',
@@ -2986,10 +3135,12 @@
'A/B_COPY/E/alpha' : Item(verb='Sending'),
'A/B_COPY/E/beta' : Item(verb='Sending'),
'A/B_COPY/lambda' : Item(verb='Sending')})
+
expected_status.tweak('A/B_COPY', wc_rev=6)
expected_status.tweak('A/B_COPY/E/alpha', wc_rev=6)
expected_status.tweak('A/B_COPY/E/beta', wc_rev=6)
expected_status.tweak('A/B_COPY/lambda', wc_rev=6)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -2999,7 +3150,9 @@
'A/B_COPY/E/alpha' : Item(status='U '),
'A/B_COPY/E/beta' : Item(status='U '),
'A/B_COPY/lambda' : Item(status='U '),})
+
expected_status.tweak(wc_rev=5)
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.add({
'A/B_COPY' : Item(),
@@ -3012,6 +3165,7 @@
expected_disk.tweak('A/B/lambda', contents="New content")
expected_disk.tweak('A/B/E/alpha', contents="New content")
expected_disk.tweak('A/B/E/beta', contents="New content")
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -3035,9 +3189,12 @@
[], 'merge', '-r2:5',
sbox.repo_url + '/A/B/E/alpha',
alpha_COPY_path)
+
+
expected_alpha_status = wc.State(alpha_COPY_path, {
'' : Item(status='MM', wc_rev=5),
})
+
svntest.actions.run_and_verify_status(alpha_COPY_path,
expected_alpha_status)
@@ -3054,13 +3211,16 @@
'A/B_COPY/E/beta' : Item(status='U '),
'A/B_COPY' : Item(status=' U'),
})
+
expected_disk.tweak('A/B_COPY', props={SVN_PROP_MERGEINFO : '/A/B:3-5'})
expected_disk.tweak('A/B_COPY/lambda', contents="New content")
expected_disk.tweak('A/B_COPY/E/beta', contents="New content")
expected_disk.tweak('A/B_COPY/E/alpha', contents="New content",
props={SVN_PROP_MERGEINFO : '/A/B/E/alpha:3-5'})
+
expected_status.tweak(wc_rev=6)
expected_status.tweak('A/B_COPY/E/alpha', status=' M')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -3087,24 +3247,30 @@
expected_output = wc.State(E_COPY_path, {
'alpha' : Item(status='U '),
})
+
expected_mergeinfo_output = wc.State(E_COPY_path, {
'' : Item(status=' G'),
'alpha' : Item(status=' U'),
})
+
expected_elision_output = wc.State(E_COPY_path, {
'alpha' : Item(status=' U'),
})
+
expected_merge_status = wc.State(E_COPY_path, {
'' : Item(status=' M', wc_rev=7),
'alpha' : Item(status='MM', wc_rev=7),
'beta' : Item(status=' ', wc_rev=7),
})
+
expected_merge_disk = wc.State('', {
'' : Item(props={SVN_PROP_MERGEINFO : '/A/B/E:3-5,7'}),
'alpha' : Item("More new content"),
'beta' : Item("New content"),
})
+
expected_skip = wc.State(E_COPY_path, { })
+
svntest.actions.run_and_verify_merge(E_COPY_path, '6', '7',
sbox.repo_url + '/A/B/E', None,
expected_output,
@@ -3120,11 +3286,14 @@
svntest.actions.run_and_verify_svn(None,
["At revision 7.\n"],
[], 'update', wc_dir)
+
expected_output = wc.State(wc_dir,
{'A/B_COPY/E' : Item(verb='Sending'),
'A/B_COPY/E/alpha' : Item(verb='Sending')})
+
expected_status.tweak(wc_rev=7)
expected_status.tweak('A/B_COPY/E', 'A/B_COPY/E/alpha', wc_rev=8)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3133,7 +3302,9 @@
'A/B_COPY/E/alpha' : Item(status='UU'),
'A/B_COPY/E' : Item(status=' U'),
})
+
expected_status.tweak(wc_rev=7)
+
expected_disk.tweak('A/B_COPY',
props={SVN_PROP_MERGEINFO : '/A/B:3-5'})
expected_disk.tweak('A/B/E/alpha', contents="More new content")
@@ -3151,13 +3322,16 @@
expected_output = wc.State(B_COPY_path, {
'E/alpha' : Item(status='U '),
})
+
expected_mergeinfo_output = wc.State(B_COPY_path, {
'' : Item(status=' U'),
'E/alpha' : Item(status=' U'),
})
+
expected_elision_output = wc.State(B_COPY_path, {
'E/alpha' : Item(status=' U'),
})
+
expected_merge_status = wc.State(B_COPY_path, {
'' : Item(status=' M', wc_rev=7),
'lambda' : Item(status=' ', wc_rev=7),
@@ -3166,6 +3340,7 @@
'E/beta' : Item(status=' ', wc_rev=7),
'F' : Item(status=' ', wc_rev=7),
})
+
expected_merge_disk = wc.State('', {
'' : Item(props={SVN_PROP_MERGEINFO : '/A/B:3-5,7'}),
'lambda' : Item("New content"),
@@ -3174,6 +3349,7 @@
'E/beta' : Item("New content"),
'F' : Item(),
})
+
expected_skip = wc.State(B_COPY_path, { })
svntest.actions.run_and_verify_merge(B_COPY_path, '6', '7',
@@ -3194,16 +3370,19 @@
'A/B_COPY/E/alpha' : Item(status='GG'),
'A/B_COPY/E/' : Item(status=' U'),
})
+
expected_status.tweak('A/B_COPY', status=' M', wc_rev=7)
expected_status.tweak('A/B_COPY/E', status=' ', wc_rev=8)
expected_status.tweak('A/B_COPY/E/alpha', wc_rev=8)
expected_status.tweak('A/B_COPY/E/beta', wc_rev=8)
+
expected_disk.tweak('A/B_COPY',
props={SVN_PROP_MERGEINFO : '/A/B:3-5,7'})
expected_disk.tweak('A/B_COPY/E',
props={SVN_PROP_MERGEINFO : '/A/B/E:3-5,7'})
expected_disk.tweak('A/B_COPY/E/alpha', contents="More new content",
props={})
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -3236,10 +3415,12 @@
expected_output = svntest.wc.State(wc_dir, {
'A/D/G/glub' : Item(verb='Adding'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.add({
'A/D/G/glub' : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3272,6 +3453,7 @@
expected_status.add({
'A/D/G/glub' : Item(status='MM', wc_rev=2),
})
+
svntest.actions.run_and_verify_update(wc_backup,
expected_output,
expected_disk,
@@ -3304,28 +3486,34 @@
'A/B/E/alpha' : Item(verb='Deleting'),
'A/D/G/glub' : Item(verb='Adding'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.add({
'A/D/G/glub' : Item(status=' ', wc_rev=2),
})
expected_status.remove('A/B/E/alpha')
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# In the 2nd working copy, update just one side of the move -- so that
# alpha gets deleted, but glub not yet added.
E_path = os.path.join(wc_backup, 'A', 'B', 'E')
+
expected_output = svntest.wc.State(E_path, {
'alpha' : Item(status='D '),
})
+
expected_disk = wc.State('', {
'beta' : wc.StateItem("This is the file 'beta'.\n"),
})
+
expected_status = svntest.wc.State(E_path, {
'' : Item(status=' '),
'beta' : Item(status=' '),
})
expected_status.tweak(wc_rev=2)
+
svntest.actions.run_and_verify_update(E_path,
expected_output,
expected_disk,
@@ -3338,16 +3526,19 @@
expected_output = wc.State(wc_backup, {
'A/D/G/glub' : Item(status='A '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('A/B/E/alpha')
expected_disk.add({
'A/D/G/glub' : Item("This is the file 'alpha'.\n"),
})
+
expected_status = svntest.actions.get_virginal_state(wc_backup, 2)
expected_status.remove('A/B/E/alpha')
expected_status.add({
'A/D/G/glub' : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_update(wc_backup,
expected_output,
expected_disk,
@@ -3379,10 +3570,12 @@
expected_output = svntest.wc.State(wc_dir, {
'A/D/G/glub' : Item(verb='Adding'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.add({
'A/D/G/glub' : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3394,10 +3587,12 @@
expected_output = svntest.wc.State(wc_dir, {
'A/D/G/glub' : Item(verb='Sending'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.add({
'A/D/G/glub' : Item(status=' ', wc_rev=3),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3421,7 +3616,8 @@
expected_disk.tweak('A/D/G/rho',
contents="New first line.\nThis is the file 'rho'.\n")
expected_disk.add({
- 'A/D/G/glub' : Item("New first line.\nThis is the file 'rho'.\nSome new text.\n",
+ 'A/D/G/glub' : Item("New first line.\nThis is the file 'rho'.\n"
+ + "Some new text.\n",
props={'Kubla' : 'Khan'})
})
@@ -3430,6 +3626,7 @@
expected_status.add({
'A/D/G/glub' : Item(status='M ', wc_rev=3),
})
+
svntest.actions.run_and_verify_update(wc_backup,
expected_output,
expected_disk,
@@ -3480,12 +3677,14 @@
fn2_relpath : Item(verb='Replacing'),
fn3_relpath : Item(verb='Deleting'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove(fn2_relpath, fn3_relpath)
expected_status.add({
fn1_relpath : Item(status=' ', wc_rev=2),
fn2_relpath : Item(status=' ', wc_rev=2),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3497,12 +3696,14 @@
expected_output = svntest.wc.State(wc_dir, {
fn2_relpath : Item(verb='Sending'),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove(fn2_relpath, fn3_relpath)
expected_status.add({
fn1_relpath : Item(status=' ', wc_rev=2),
fn2_relpath : Item(status=' ', wc_rev=3),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3512,8 +3713,10 @@
fn2_relpath: Item(status='A '), # though actually should be D and A
fn3_relpath: Item(status='A '),
})
+
# Create expected disk tree for the update to rev 0
expected_disk = svntest.main.greek_state.copy()
+
# Do the update and check the results.
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
@@ -3528,6 +3731,7 @@
fn2_relpath: Item(status='A '), # though actually should be D and A
fn3_relpath: Item(status='D '),
})
+
# Create expected disk tree for the update to rev 0
expected_disk = svntest.main.greek_state.copy()
expected_disk.add({
@@ -3535,8 +3739,10 @@
})
expected_disk.tweak(fn2_relpath, contents=fn2_final_contents)
expected_disk.remove(fn3_relpath)
+
# reuse old expected_status, but at r3
expected_status.tweak(wc_rev=3)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -3562,8 +3768,10 @@
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(verb='Sending'),
})
+
expected_status_mixed = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status_mixed.tweak('iota', wc_rev=2)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status_mixed, None, wc_dir)
@@ -3577,21 +3785,26 @@
expected_output = svntest.wc.State(wc_dir, {
'iota2' : Item(verb='Adding'),
})
+
expected_status_mixed.add({
'iota2' : Item(status=' ', wc_rev=3),
})
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status_mixed, None, wc_dir)
# Update the whole wc, verifying disk as well.
expected_output = svntest.wc.State(wc_dir, { })
+
expected_disk_r3 = svntest.main.greek_state.copy()
expected_disk_r3.add({
'iota2' : Item("This is the file 'iota'.\n"),
})
expected_disk_r3.tweak('iota', props={'foo':'bar'})
+
expected_status_r3 = expected_status_mixed.copy()
expected_status_r3.tweak(wc_rev=3)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk_r3,
@@ -3600,11 +3813,14 @@
# Now go back to r2.
expected_output = svntest.wc.State(wc_dir, {'iota2': Item(status='D ')})
+
expected_disk_r2 = expected_disk_r3.copy()
expected_disk_r2.remove('iota2')
+
expected_status_r2 = expected_status_r3.copy()
expected_status_r2.tweak(wc_rev=2)
expected_status_r2.remove('iota2')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk_r2,
@@ -3615,6 +3831,7 @@
# And finally, back to r3, getting an add-with-history-and-property-deleted
expected_output = svntest.wc.State(wc_dir, {'iota2': Item(status='A ')})
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk_r3,
@@ -3882,8 +4099,11 @@
expected_output = svntest.wc.State(wc_dir, {
'iota' : Item(status='U '),
})
+
expected_disk = svntest.main.greek_state.copy()
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -3903,12 +4123,14 @@
# Now update -r1 again. Hopefully we don't get a checksum error!
expected_output = svntest.wc.State(wc_dir, {})
+
# note: it's possible that the correct disk here should be the
# merged file?
expected_disk.tweak('iota', contents=("This is the file 'iota'.\n"
"Local mods to r1 text.\n"))
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('iota', status='M ')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -3966,10 +4188,13 @@
# Commit a propset on A.
svntest.main.run_svn(None, 'propset', 'prop', 'val', A_path)
+
expected_output = svntest.wc.State(wc_dir, {
'A': Item(verb='Sending'),
})
+
expected_status.tweak('A', wc_rev=2)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3984,15 +4209,18 @@
svntest.main.run_svn(None, 'propdel', 'prop', other_A_path)
svntest.main.file_write(other_zeta_path, 'New file\n')
svntest.main.run_svn(None, 'add', other_zeta_path)
+
expected_output = svntest.wc.State(other_wc, {
'A': Item(verb='Sending'),
'A/zeta' : Item(verb='Adding'),
})
+
expected_status = svntest.actions.get_virginal_state(other_wc, 1)
expected_status.tweak('A', wc_rev=3)
expected_status.add({
'A/zeta' : Item(status=' ', wc_rev=3),
})
+
svntest.actions.run_and_verify_commit(other_wc, expected_output,
expected_status, None, other_wc)
@@ -4001,6 +4229,7 @@
# dir which still has the property.
svntest.main.file_write(zeta_path, 'Obstructing file\n')
error_re = 'Failed to add file.*file of the same name already exists'
+
svntest.actions.run_and_verify_update(wc_dir, None, None, None,
error_re)
@@ -4012,11 +4241,13 @@
'A' : Item(status=' U'),
'A/zeta' : Item(status='A '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.tweak('A', props = {})
expected_disk.add({
'A/zeta' : Item("New file\n"),
})
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
expected_status.add({
'A/zeta' : Item(status=' ', wc_rev=3),
@@ -4177,6 +4408,7 @@
'DDD/D1/D2/D3',
'DDF/D1/D2/gamma',
'DF/D1/beta')
+
### Why does the deep trees state not include files?
expected_disk.remove('D/D1',
'DD/D1/D2',
@@ -4357,6 +4589,7 @@
'DDD/D1/D2/D3',
'DDF/D1/D2',
'DDF/D1/D2/gamma',)
+
expected_disk.remove('D/D1',
'DD/D1',
'DD/D1/D2',
@@ -4517,6 +4750,7 @@
'DDD/D1/D2/D3',
'DDF/D1/D2',
'DDF/D1/D2/gamma',)
+
expected_disk.remove('D/D1',
'DD/D1',
'DD/D1/D2',
@@ -4602,22 +4836,28 @@
# r2: Move A/B/E/alpha to A/B/E/alpha.moved in the first WC.
svntest.actions.run_and_verify_svn(None, None, [], 'move',
alpha_path, alpha_moved_path)
+
expected_output = wc.State(wc_dir, {
'A/B/E/alpha' : Item(verb='Deleting'),
'A/B/E/alpha.moved' : Item(verb='Adding')
})
+
expected_status.add({'A/B/E/alpha.moved' : Item(status=' ', wc_rev=2)})
expected_status.remove('A/B/E/alpha')
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
# r3: Make a text mod to A/B/E/alpha.moved in the first WC.
new_content_for_alpha = 'alpha, modified after move\n'
svntest.main.file_write(alpha_moved_path, new_content_for_alpha)
+
expected_output = svntest.wc.State(wc_dir, {
'A/B/E/alpha.moved' : Item(verb='Sending'),
})
+
expected_status.tweak('A/B/E/alpha.moved', wc_rev=3)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None,
wc_dir)
@@ -4631,12 +4871,14 @@
'alpha' : Item(status=' ', treeconflict='C'),
'alpha.moved' : Item(status='C '),
})
+
expected_status = wc.State(other_E_path, {
'' : Item(status=' ', wc_rev=3),
'alpha' : Item(status='A ', wc_rev='-', copied='+', treeconflict='C'),
'alpha.moved' : Item(status='C ', wc_rev=3),
'beta' : Item(status=' ', wc_rev=3),
})
+
expected_disk = wc.State('', {
'alpha' : Item(new_content_for_other_alpha),
'alpha.moved' : Item("<<<<<<< .mine\n" +
@@ -4659,6 +4901,7 @@
# Prior to the fix for issue #3354 this update failed and left the
# WC locked.
expected_skip = wc.State(other_E_path, { })
+
svntest.actions.run_and_verify_update(other_E_path,
expected_output,
expected_disk,
@@ -4771,6 +5014,7 @@
# The status of the new and old scenarios should be identical.
expected_status = resolved_status.copy()
expected_status.wc_dir = wc2
+
svntest.actions.run_and_verify_status(wc2, expected_status)
expected_status = resolved_status.copy()
@@ -4782,10 +5026,12 @@
expected_output = svntest.wc.State(wc_dir, {
'A' : Item(verb='Deleting'),
})
+
expected_status = svntest.wc.State(wc_dir, {
'' : Item(status=' ', wc_rev=2),
'iota' : Item(status=' ', wc_rev=2),
})
+
run_and_verify_commit(wc_dir, expected_output, expected_status,
None, wc_dir, '-m', 'commit resolved tree')
@@ -4932,18 +5178,21 @@
'A/B/lambda' : Item(status='D '),
'A/B/F' : Item(status='D '),
})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('A/B/F',
'A/B/lambda',
'A/B/E',
'A/B/E/alpha',
'A/B/E/beta')
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.remove('A/B/F',
'A/B/lambda',
'A/B/E',
'A/B/E/alpha',
'A/B/E/beta')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -4952,6 +5201,7 @@
None, None, 1,
'--set-depth', 'empty',
B_path)
+
expected_output = svntest.wc.State(wc_dir, {
'A/D/G/pi' : Item(status='D '),
'A/D/G/rho' : Item(status='D '),
@@ -4960,18 +5210,21 @@
'A/D/H/omega' : Item(status='D '),
'A/D/H/psi' : Item(status='D '),
})
+
expected_status.remove('A/D/G/pi',
'A/D/G/rho',
'A/D/G/tau',
'A/D/H/chi',
'A/D/H/omega',
'A/D/H/psi')
+
expected_disk.remove('A/D/G/pi',
'A/D/G/rho',
'A/D/G/tau',
'A/D/H/chi',
'A/D/H/omega',
'A/D/H/psi')
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -4996,8 +5249,11 @@
'A/D/H/omega' : Item(status='A '),
'A/D/H/psi' : Item(status='A '),
})
+
expected_disk = svntest.main.greek_state.copy()
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
svntest.actions.run_and_verify_update(wc_dir,
expected_output,
expected_disk,
@@ -5047,10 +5303,12 @@
svntest.main.run_svn(None, 'delete', E)#iota, E)
expected_output = svntest.wc.State(wc_dir, {})
+
expected_disk = svntest.main.greek_state.copy()
expected_disk.remove('iota',
'A/B/E/alpha',
'A/B/E/beta')
+
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
expected_status.tweak('iota',
'A/B/E/alpha',
@@ -5060,6 +5318,7 @@
'A/B/E/alpha',
'A/B/E/beta',
status='D ')
+
# Issue #3525 manifests itself here; the update causes a spurious
# tree conflict.
svntest.actions.run_and_verify_update(wc_dir,