Hi All,
This patch has been kicking around for a while so I'm reposting it.
Even if no one has time to give it a detailed look, please let me know if
you have any concerns with the core purpose of the patch - see the log.
Paul B.
"If you ever drop your keys into a river of molten lava, let 'em go,
because man, they're gone." - Jack Handy
[[[
Enable up/sw/co to tolerate obstructions scheduled for addition without
history.
It's no longer an error when an update, switch, or checkout attempts to
add a path that is already scheduled for addition *without* history in
the WC.
In the case of dirs, the directory is tolerated and reported as
'E'xisting.
For files, if the obstruction is identical textually to the addition
from the repos it is reported as 'E'xisting, if it differs it's treated
as a conflict.
Property merges for both files and dirs are reported normally,
i.e. ' ', 'C', 'G'.
Obstructions scheduled for addition *with* history still result in
an error.
* subversion/libsvn_wc/update_editor.c
(dir_baton): New members existed and add_existed.
(make_dir_baton): Initialize new dir_baton members.
(file_baton): New member add_existed.
(make_file_baton): Initialize new file_baton member.
(prep_directory): Retrieve *svn_wc_adm_access_t if attempt to open it
fails due to locked WC.
(add_directory): Revamp tests of valid obstructions to add coming from
repos to allow obstructions scheduled for addition without history.
If dir is scheduled for addition without history, change the schedule in
its parent and its own "this dir" entry to normal. Also change the
"this dir" rev from 0 to the target revision. And lastly, use the
'E'xists notification for obstructing adds without history.
(add_or_open_file): Revamp tests of valid obstructions to add coming
from repos to allow obstructions scheduled for addition without
history. Set new file_baton member to true if appropriate.
(merge_file): New argument 'add_existed'. If file is scheduled for
addition without history, change its entry schedule to normal and create
an empty text-base for it. Update the "matrix" and change it's
implementation so obstructions scheduled for addition w/o history are
merged.
(close_file): Pass new file_baton member to merge_file() so it knows
when obstruction is added w/o history. Report the file as 'E'xisting
if the merge didn't conflict.
* subversion/svn/notify.c
(notify): Expand svn_wc_notify_exists case to handle notification for
obstructions scheduled for addition without history in addition to
unvserioned obstructions.
* subversion/tests/cmdline/checkout_tests.py
(forced_checkout_with_versioned_obstruction): Tweak expected error
message to reflect changes in add_or_open_file.
(co_with_obstructing_local_adds): New test.
(test_list): Run new test.
* subversion/tests/cmdline/switch_tests.py
(forced_switch_failures): Tweak expected error to reflect new error
message.
(switch_with_obstructing_local_adds): New test.
(test_list): Run new test.
* subversion/tests/cmdline/update_tests.py
(update_receive_illegal_name, forced_update_failures): Tweak expected
errors to reflect new error messages.
(update_with_obstructing_additions): New test.
(test_list): Run new test.
]]]
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Oct 25 21:55:59 2006