subversion

Checkout Tools
  • last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 873966 is being indexed.

When can't print a bad filename, then at least print the directory it's in.

(Reproduction recipe given below.)

* subversion/libsvn_subr/io.c

(entry_name_to_utf8): New helper function to give a better error.

(svn_io_get_dirents2, svn_io_copy_dir_recursively, svn_io_remove_dir2,

svn_io_get_dir_filenames, svn_io_dir_walk): Use new helper.

(svn_io_dir_read): Explain why we don't use the new helper here.

* subversion/libsvn_subr/utf.c

(invalid_utf8, check_utf8, check_cstring_utf8): Document that the

error code is APR_EINVAL.

* subversion/include/svn_utf.h: Document that when conversion fails the

error code is APR_EINVAL.

This change replaces cryptic and uninformative errors...

$ svn st -q

subversion/libsvn_subr/utf.c:597: (apr_err=22)

svn: Valid UTF-8 data

(hex: 20)

followed by invalid UTF-8 sequence

(hex: 90 1b 0a 5a)

$

...with equally cryptic but more informative errors:

$ svn st -q

subversion/libsvn_subr/io.c:126: (apr_err=22)

svn: Error converting entry in directory 'www' to UTF8

subversion/libsvn_subr/utf.c:597: (apr_err=22)

svn: Valid UTF-8 data

(hex: 20)

followed by invalid UTF-8 sequence

(hex: 90 1b 0a 5a)

$

This program will create such a file in cwd for testing:

#include <stdio.h>

#include <string.h>

int main()

{

const char fname[] = { 0x20, 0x90, 0x1b, 0x0a, 0x5a, 0 };

FILE *fp = fopen(fname, "w");

fclose(fp);

}

In most Unix shells, you can remove the file with "rm ' '*" afterwards.

On branch tree-conflicts-notify:

Skip files added into tree-conflicted dirs (and don't notify).

Skip deletion of tree-conflicted nodes.

Bring tests up to date with these fixes.

* subversion/libsvn_wc/update_editor.c

(do_entry_deletion): Bail out when a tree-conflict was raised.

(add_file): Remove notification for add in tree-conflicted dir.

(add_directory, close_directory): Remove unused variable declaration.

(open_directory): Cosmetic.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_unquiet_status): rename OUTPUT_TREE to STATUS_TREE and

write "UNQUIET STATUS" instead of "OUTPUT" in tree dump.

(deep_trees_empty_dirs): New tree template.

* subversion/tests/cmdline/update_tests.py

(tree_conflicts_on_update_1_1,

tree_conflicts_on_update_1_2,

tree_conflicts_on_update_2_1,

tree_conflicts_on_update_2_2,

tree_conflicts_on_update_3): Fix up to reflect the current state of

the tree conflict detection code, and minor cosmetics.

(state_empty_dirs): New global helper reference.

* subversion/tests/cmdline/switch_tests.py

(tree_conflicts_on_switch_1_1,

tree_conflicts_on_switch_1_2,

tree_conflicts_on_switch_2_1,

tree_conflicts_on_switch_2_2,

tree_conflicts_on_switch_3): Fix up to reflect the current state of

the tree conflict detection code, and minor cosmetics.

(state_empty_dirs): New global helper reference.

Polish translation update.

* subversion/po/pl.po: Polish translation update.

Follow-up to r33791:

* subversion/svn/util.c

(svn_cl__cleanup_log_msg): Fix error message.

On the tree-conflicts-notify branch: Fix up the switch tests so they

pass.

In forced_switch_failures, I think all three subtests should raise

tree conflicts instead of errors. Currently two still raise errors.

Happily, tree_conflicts_on_switch_2_2 no longer raises errors and is

now much simpler, like the corresponding update test.

* subversion/tests/cmdline/switch_tests.py

(forced_switch_failures): Add expected status, disk, and output in

place of an expected error message. Currently for subtest 3 only.

(switch_with_obstructing_local_adds): Add a couple of tree

conflicts to the expected status.

(tree_conflicts_on_switch_1_1,

tree_conflicts_on_switch_1_2,

tree_conflicts_on_switch_2_1,

tree_conflicts_on_switch_2_2,

tree_conflicts_on_switch_3): Fix up to reflect the current state of

the tree conflict detection code.

(test_list): Remove XFail() from the tests mentioned above.

On the issue-3067-deleted-subtrees branch: Merge r33854-33886 from trunk.
  1. … 45 more files in changeset.
Cosmetic tweaks.

* subversion/tests/cmdline/update_tests.py

(tree_conflicts_on_update_1_2): Remove a misleading comment. Remove a

redundant creation of the status tree (was created and overwritten).

(tree_conflicts_on_update_2_1, tree_conflicts_on_update_2_2): Define

the expected_disk explicitly between expected_output and expected_status

upon creation because it matches the pattern of the other tree-conflicts

tests (readability). Also add one comment on current test results.

Add tree-conflict notification for files that cannot be added because

their parent directory is a tree-conflict victim.

* subversion/libsvn_wc/update_editor.c (add_file): Check whether the

parent directory of the add is in conflict and explicitly raise

a tree-conflict, call the notify-callback and skip the file add.

Remove todo-comments.

* subversion/tests/cmdline/update_tests.py (tree_conflicts_on_update_1_1):

Adjust test expectations and comments.

JavaHL: More tree conflicts work. Include in the Info2 class a description

of any tree conflicts that this node may be a part of.

[ subversion/bindings/javahl/ ]

* native/ConflictResolverCallback.cpp

(resolve): Yank out the conflict descriptor creator into a separate method.

(createJConflictDescriptor): New.

* native/ConflictResolverCallback.h

(createJConflictDescriptor): New.

* native/InfoCallback.cpp

(createJavaInfo2): Include the conflict descriptor in the created Info2

object.

* src/org/tigris/subversion/javahl/Info2.java

(treeConflict): New.

(Info2): Accept a conflict descriptor for the tree conflict.

(getTreeConflict): New.

On the tree-conflicts-notify branch: Fix some bugs in my conflict

state lookup. Edit update tests so that they all pass with the

current (imperfect) behavior.

Update now skips deleted files within a tree conflict. It used to

carry out the text update.

* subversion/libsvn_wc/questions.c

(svn_conflicted_p2): Look for a dir's prop-reject file inside the dir.

* subversion/libsvn_wc/status.c

(assemble_status): Remove redundant if-statement that skipped tree

conflict lookup for dirs (oops!).

* subversion/libsvn_client/commit_util.c

(harvest_committables): Now that looking up conflict state no longer

requires an entry, we can disentangle the code for conflict-state

from the code that prepares for recursion on dir-entries. Look up

conflict state in just one place instead of three.

* subversion/libsvn_wc/update_editor.c

(open_file): Restore Neels' tweak of the notify-reason, so that a

tree conflict victim sends output " C" instead of "Skipped".

* subversion/tests/cmdline/update_tests.py

(update_delete_modified_files,

prop_update_on_scheduled_delete,

another_hudson_problem,

tree_conflicts_on_update_1_1,

tree_conflicts_on_update_1_2,

tree_conflicts_on_update_2_1,

tree_conflicts_on_update_2_2,

tree_conflicts_on_update_3): Fix up to track current behavior.

* subversion/tests/cmdline/svntest/actions.py

(build_tree_from_checkout): Don't add blank 'treeconflict' attributes.

Update the dav server survey for Nov. 2008. This almost brings us back up to

pre-August levels when the survey parameters changed.

* www/svn-dav-securityspace-survey.html,

www/images/svn-dav-securityspace-survey.png,

tools/dev/graph-dav-servers.py:

Update image and table.

Announce the 1.5.4 release.

* www/release-history.html,

www/getting.html,

www/index.html,

www/roadmap.html:

Update website for 1.5.4.

* subversion/po/fr.po: Fix typo.

Patch by: Cyril Brulebois <cyril.brulebois@kerlabs.com>

On the tree-conflicts-notify branch: ' C' for tree-conflict victims

instead of 'C ' for parent dirs, in update/switch output.

It should work for merge, too, once we get the plumbing hooked up in

repos_diff.c and merge.c, because merge uses the update code for its

output.

Removed the code on the branch that printed the extra '(X->Y)' info

that we are adding to the status command (svn status --conflicts).

For now, output just gives you a 'C'.

The tree conflict check returns a boolean result for immediate use,

and svn_wc_conflicted_p2() is rewritten so that it can handle

nonexistent paths.

Sorry I haven't updated the test expectations yet, except for

parsing the new output column.

.

* subversion/svn/notify.c

(notify): Print a C in the new fourth column for a tree conflict

victim.

* subversion/include/svn_wc.h

(svn_wc_notify_t): Rename is_tree_conflict_victim to tree_conflicted.

Remove tree_conflict_action and tree_conflict_reason fields.

(svn_wc_conflicted_p2): New args: adm_access instead of entry; path

instead of parent path. Rewrite comment.

* subversion/libsvn_wc/util.c

(svn_wc_create_notify): Track changes to svn_wc_notify_t..

* subversion/libsvn_wc/questions.c

(svn_wc_conflicted_p2): Allow any result pointer to be NULL.

Use parent's adm_access instead of requiring an entry for the

target item. Expect path arg to include target's name.

(svn_wc_conflicted_p): Rewrite using snippets of its successor.

* subversion/libsvn_wc/update_editor.c

(check_tree_conflict): Return result via new tree_conflicted arg.

(do_entry_deletion,

add_directory,

close_directory,

add_file,

close_file): Include tree conflict status in user notification.

(open_directory,

open_file): Store tree conflict status in baton for user

notification later.

(dir_baton,

file_baton): Add boolean field tree_conflicted.

(make_dir_baton,

make_file_baton): Initialize the new field.

* subversion/libsvn_wc/adm_ops.c

(resolve_conflict_on_entry): Track changes to svn_wc_conflicted_p2.

* subversion/libsvn_wc/status.c

(assemble_status): Track changes to svn_wc_conflicted_p2.

* subversion/libsvn_client/commit_util.c

(harvest_committables): Track changes to svn_wc_conflicted_p2.

* subversion/libsvn_client/externals.c

(switch_file_external): Track changes to svn_wc_conflicted_p2.

Also, we no longer have to resolve a bogus tree conflict on the

new external's parent dir.

* subversion/tests/cmdline/svntest/tree.py

(build_tree_from_checkout): Accept new tree conflict column.

Enable check_tree_conflict() to return its result as well as storing it. But

do not yet make any use of this.

* subversion/libsvn_wc/update_editor.c

(check_tree_conflict): Add an output parameter to return the conflict raised.

(do_entry_deletion, add_directory, open_directory, add_file, open_file):

Pass NULL for the new parameter in all calls.

Clarifications in code that detects pre-existing conflicts.

* subversion/libsvn_wc/update_editor.c

(open_directory): Move unrelated code out of the block that detects

conflicts. Set the notification states to indicate whether it is a

property conflict and/or a "content" conflict.

(open_file): Clarify a comment and check that no inappropriate kind of

conflict is found.

* STATUS: Nominate and note cmpilato's IRC vote for r33873-4.

* subversion/libsvn_fs_base/key-gen.h: Tiny comment tweak.

Fix a bug in svn_repos_get_logs4(), whereby passing SVN_INVALID_REVNUM

for one of the range revisions causes incorrect results.

* subversion/libsvn_repos/log.c

(svn_repos_get_logs4): Lose redundate 'hist_start' and 'hist_end'

variables, and simply tweak 'start' and 'end' as necessary..

* subversion/tests/libsvn_repos/repos-test.c

(test_funcs): No longer expect 'get_logs' test to fail.

Found by: glasser

Add a regression test for a broken API.

* subversion/tests/libsvn_repos/repos-test.c

(log_receiver): New function.

(get_logs): New test just for quickly verifying the sanity of

various revision ranges and limit values thrown at

svn_repos_get_logs4. Current expected to fail.

(test_funcs): Add reference to new test.

Include patches committed by partial committers in the contribulyzer. As

partial committers grow in the project, they usually commit their own patches

following a +1 from a full committer. Those patches required a 'Patch by' line

to show up on the contribulyzer, and this commit fixes that.

* tools/dev/contribulyze.py

(graze): If no 'Patch by' is explicitly given, assume the committer is the

author of the patch.

Don't ignore full committers' email addresses when matching in the

contribulyzer.

* tools/dev/contribulyze.py

(process_committers): When examining COMMITTERS, don't strip off the trailing

newline for a committer's entry. This was causing the regex matcher to not

include the email address in the matched group.

Tweak some doc strings.

* subversion/include/svn_wc.h

(svn_wc_add_tree_conflict_data): Fix errors I introduced in r33837.

* subversion/libsvn_wc/tree_conflicts.h

(svn_wc__loggy_add_tree_conflict_data): Tweak the doc string.

* subversion/libsvn_fs_base/notes/structure:

Document the current contents of the 'miscellaneous' table.

On the tree-conflicts-notify-branch: Bring up-to-date with trunk.
  1. … 26 more files in changeset.
* STATUS: Nominate r33866 for backport to 1.5.x.

Fix regression in 1.5.x which made ra_svn clients compiled against Cyrus

use ANONYMOUS even if EXTERNAL was available.

* subversion/libsvn_ra_svn/cyrus_auth.c

(svn_ra_svn__do_cyrus_auth): Prefer EXTERNAL to ANONYMOUS.

* subversion/libsvn_ra_svn/internal_auth.c

(svn_ra_svn__find_mech): Rename from find_mech.

(svn_ra_svn__do_internal_auth): Adjust.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn__find_mech): Declare.

JavaHL: Expose the tree_conflicted member of svn_wc_status2_t.

[ in subversion/bindings/javahl/ ]

* native/StatusCallback.cpp

(createJavaStatus): Create the Java boolean based upon the value in the

status entry, and pass it to the Java constructor.

* src/org/tigris/subversion/javahl/Status.java

(treeConflicted): New.

(Status): Add treeConflicted parameter, and set the member value using it.

(getTreeConflicted): New.

JavaHL: Update the setRevProperty API to be consistent with libsvn_client.

[ in subversion/bindings/javahl/ ]

* native/org_tigris_subversion_javahl_SVNClient.cpp

(Java_org_tigris_subversion_javahl_SVNClient_revProperty): Add extra

string parameter.

* native/SVNClient.h,

native/SVNClient.cpp

(setRevProperty): Take the additional string parameter, use it to call

svn_client_revprop_set2().

* src/org/tigris/subversion/javahl/SVNClientSynchronized.java,

src/org/tigris/subversion/javahl/SVNClient.java,

src/org/tigris/subversion/javahl/SVNClientInterface.java

(setRevProperty): New.

Followup to r33831: Just use the system temp directory for a temporary file.

In this case, the file isn't being atomically moved anywhere, just opened and

read again, so we don't really care where it lives.

* subversion/libsvn_wc/props.c

(maybe_generate_propconflict): Let the system decide where to put the

generated temp file.