Return-Path: X-Original-To: apmail-subversion-commits-archive@minotaur.apache.org Delivered-To: apmail-subversion-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DDA93EDBA for ; Sun, 23 Dec 2012 06:04:12 +0000 (UTC) Received: (qmail 15472 invoked by uid 500); 23 Dec 2012 06:04:12 -0000 Delivered-To: apmail-subversion-commits-archive@subversion.apache.org Received: (qmail 15437 invoked by uid 500); 23 Dec 2012 06:04:12 -0000 Mailing-List: contact commits-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@subversion.apache.org Delivered-To: mailing list commits@subversion.apache.org Received: (qmail 15427 invoked by uid 99); 23 Dec 2012 06:04:12 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Dec 2012 06:04:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Dec 2012 06:04:09 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 703632388B6C; Sun, 23 Dec 2012 06:03:25 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r1425415 [10/13] - in /subversion/branches/javahl-ra: ./ build/generator/templates/ notes/ notes/directory-index/ subversion/bindings/swig/python/svn/ subversion/bindings/swig/ruby/test/ subversion/include/ subversion/include/private/ subve... Date: Sun, 23 Dec 2012 06:03:17 -0000 To: commits@subversion.apache.org From: vmpn@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121223060325.703632388B6C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h?rev=1425415&r1=1425414&r2=1425415&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h (original) +++ subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h Sun Dec 23 06:03:14 2012 @@ -435,6 +435,25 @@ svn_wc__db_base_add_directory(svn_wc__db const svn_skel_t *work_items, apr_pool_t *scratch_pool); +/* Add a new directory in BASE, whether WORKING nodes exist or not. Mark it + as incomplete and with revision REVISION. If REPOS_RELPATH is not NULL, + apply REPOS_RELPATH, REPOS_ROOT_URL and REPOS_UUID. + Perform all temporary allocations in SCRATCH_POOL. + */ +svn_error_t * +svn_wc__db_base_add_incomplete_directory(svn_wc__db_t *db, + const char *local_abspath, + const char *repos_relpath, + const char *repos_root_url, + const char *repos_uuid, + svn_revnum_t revision, + svn_depth_t depth, + svn_boolean_t insert_base_deleted, + svn_boolean_t delete_working, + svn_skel_t *conflict, + svn_skel_t *work_items, + apr_pool_t *scratch_pool); + /* Add or replace a file in the BASE tree. @@ -484,11 +503,12 @@ svn_wc__db_base_add_file(svn_wc__db_t *d const char *changed_author, const svn_checksum_t *checksum, apr_hash_t *dav_cache, - const svn_skel_t *conflict, + svn_boolean_t delete_working, svn_boolean_t update_actual_props, apr_hash_t *new_actual_props, svn_boolean_t keep_recorded_info, svn_boolean_t insert_base_deleted, + const svn_skel_t *conflict, const svn_skel_t *work_items, apr_pool_t *scratch_pool); @@ -565,9 +585,12 @@ svn_wc__db_base_add_symlink(svn_wc__db_t const char *changed_author, const char *target, apr_hash_t *dav_cache, - const svn_skel_t *conflict, + svn_boolean_t delete_working, svn_boolean_t update_actual_props, apr_hash_t *new_actual_props, + svn_boolean_t keep_recorded_info, + svn_boolean_t insert_base_deleted, + const svn_skel_t *conflict, const svn_skel_t *work_items, apr_pool_t *scratch_pool); @@ -636,13 +659,15 @@ svn_wc__db_base_add_not_present_node(svn apr_pool_t *scratch_pool); -/* Remove a node from the BASE tree. +/* Remove a node and all its descendants from the BASE tree. This handles + the deletion of a tree from the update editor and some file external + scenarios. The node to remove is indicated by LOCAL_ABSPATH from the local filesystem. - Note that no changes are made to the local filesystem; LOCAL_ABSPATH - is merely the key to figure out which BASE node to remove. + This operation *installs* workqueue operations to update the local + filesystem after the database operation. To maintain a consistent database this function will also remove any working node that marks LOCAL_ABSPATH as base-deleted. If this @@ -650,12 +675,24 @@ svn_wc__db_base_add_not_present_node(svn actual node will be removed if the actual node does not mark a conflict. - Note the caller is responsible for removing base node - children before calling this function (this may change). + If KEEP_AS_WORKING is TRUE, then the base tree is copied to higher + layers as a copy of itself before deleting the BASE nodes. + + If NOT_PRESENT_REVISION specifies a valid revision a not-present + node is installed in BASE node with kind NOT_PRESENT_KIND after + deleting. + + If CONFLICT and/or WORK_ITEMS are passed they are installed as part + of the operation, after the work items inserted by the operation + itself. */ svn_error_t * svn_wc__db_base_remove(svn_wc__db_t *db, const char *local_abspath, + svn_boolean_t keep_as_working, + svn_revnum_t not_present_revision, + svn_skel_t *conflict, + svn_skel_t *work_items, apr_pool_t *scratch_pool); @@ -1294,6 +1331,8 @@ svn_wc__db_op_copy_file(svn_wc__db_t *db const char *original_uuid, svn_revnum_t original_revision, const svn_checksum_t *checksum, + svn_boolean_t update_actual_props, + const apr_hash_t *new_actual_props, svn_boolean_t is_move, const svn_skel_t *conflict, const svn_skel_t *work_items, @@ -1427,6 +1466,10 @@ svn_wc__db_temp_working_set_props(svn_wc /* Mark LOCAL_ABSPATH, and all children, for deletion. * + * This function removes the file externals (and if DELETE_DIR_EXTERNALS is + * TRUE also the directory externals) registered below LOCAL_ABSPATH. + * (DELETE_DIR_EXTERNALS should be true if also removing unversioned nodes) + * * If MOVED_TO_ABSPATH is not NULL, mark the deletion of LOCAL_ABSPATH * as the delete-half of a move from LOCAL_ABSPATH to MOVED_TO_ABSPATH. * @@ -1442,11 +1485,13 @@ svn_error_t * svn_wc__db_op_delete(svn_wc__db_t *db, const char *local_abspath, const char *moved_to_abspath, - /* ### flip to CANCEL, then NOTIFY. precedent. */ - svn_wc_notify_func2_t notify_func, - void *notify_baton, + svn_boolean_t delete_dir_externals, + svn_skel_t *conflict, + svn_skel_t *work_items, svn_cancel_func_t cancel_func, void *cancel_baton, + svn_wc_notify_func2_t notify_func, + void *notify_baton, apr_pool_t *scratch_pool); @@ -1458,6 +1503,10 @@ svn_wc__db_op_delete(svn_wc__db_t *db, * It currently lacks support for moves (though this could be changed, * at which point svn_wc__db_op_delete() becomes redundant). * + * This function removes the file externals (and if DELETE_DIR_EXTERNALS is + * TRUE also the directory externals) registered below the targets. + * (DELETE_DIR_EXTERNALS should be true if also removing unversioned nodes) + * * If NOTIFY_FUNC is not NULL, then it will be called (with NOTIFY_BATON) * for each node deleted. While this processing occurs, if CANCEL_FUNC is * not NULL, then it will be called (with CANCEL_BATON) to detect cancellation @@ -1469,6 +1518,8 @@ svn_wc__db_op_delete(svn_wc__db_t *db, svn_error_t * svn_wc__db_op_delete_many(svn_wc__db_t *db, apr_array_header_t *targets, + svn_boolean_t delete_dir_externals, + const svn_skel_t *conflict, svn_cancel_func_t cancel_func, void *cancel_baton, svn_wc_notify_func2_t notify_func, @@ -1553,9 +1604,8 @@ svn_wc__db_op_revert(svn_wc__db_t *db, apr_pool_t *scratch_pool); /* Query the revert list for LOCAL_ABSPATH and set *REVERTED if the - * path was reverted. Set *CONFLICT_OLD, *CONFLICT_NEW, - * *CONFLICT_WORKING and *PROP_REJECT to the names of the conflict - * files, or NULL if the names are not stored. + * path was reverted. Set *MARKER_FILES to a const char *list of + * marker files if any were recorded on LOCAL_ABSPATH. * * Set *COPIED_HERE if the reverted node was copied here and is the * operation root of the copy. @@ -1565,10 +1615,7 @@ svn_wc__db_op_revert(svn_wc__db_t *db, */ svn_error_t * svn_wc__db_revert_list_read(svn_boolean_t *reverted, - const char **conflict_old, - const char **conflict_new, - const char **conflict_working, - const char **prop_reject, + const apr_array_header_t **marker_files, svn_boolean_t *copied_here, svn_kind_t *kind, svn_wc__db_t *db, @@ -1616,50 +1663,6 @@ svn_wc__db_revert_list_done(svn_wc__db_t const char *local_abspath, apr_pool_t *scratch_pool); - -/* Return a hash @a *tree_conflicts of all the children of @a - * local_abspath that are in tree conflicts. The hash maps local - * basenames to pointers to svn_wc_conflict_description2_t, all - * allocated in result pool. - */ -/* ### this is not an OPERATION. remove the _op_. */ -svn_error_t * -svn_wc__db_op_read_all_tree_conflicts(apr_hash_t **tree_conflicts, - svn_wc__db_t *db, - const char *local_abspath, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - -/* Get any tree conflict associated with LOCAL_ABSPATH in DB, and put it - in *TREE_CONFLICT, allocated in RESULT_POOL. - - Use SCRATCH_POOL for any temporary allocations. -*/ -/* ### this is not an OPERATION. remove the _op_. */ -svn_error_t * -svn_wc__db_op_read_tree_conflict( - const svn_wc_conflict_description2_t **tree_conflict, - svn_wc__db_t *db, - const char *local_abspath, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - - -/* Set the tree conflict on LOCAL_ABSPATH in DB to TREE_CONFLICT. Use - NULL to remove a tree conflict. - - Use SCRATCH_POOL for any temporary allocations. -*/ -/* ### can this also record text/prop conflicts? drop "tree"? */ -/* ### dunno if it can, but it definitely should be able to. */ -/* ### gjs: also ref: db_op_mark_conflict() */ -svn_error_t * -svn_wc__db_op_set_tree_conflict(svn_wc__db_t *db, - const char *local_abspath, - const svn_wc_conflict_description2_t *tree_conflict, - apr_pool_t *scratch_pool); - - /* ### status */ @@ -2150,9 +2153,9 @@ svn_wc__db_read_conflict_victims(const a apr_pool_t *result_pool, apr_pool_t *scratch_pool); -/* Read into *MARKER_FILES the basenames of the immediate children of - LOCAL_ABSPATH in DB that are unversioned marker files for text or - property conflicts. The files may have been deleted by the user. +/* Read into *MARKER_FILES the absolute paths of the marker files + of conflicts stored on LOCAL_ABSPATH and its immediate children in DB. + The on-disk files may have been deleted by the user. Allocate *MARKER_FILES in RESULT_POOL and do temporary allocations in SCRATCH_POOL */ @@ -2163,22 +2166,20 @@ svn_wc__db_get_conflict_marker_files(apr apr_pool_t *result_pool, apr_pool_t *scratch_pool); -/* Read into CONFLICTS svn_wc_conflict_description2_t* structs - for all conflicts that have LOCAL_ABSPATH as victim. +/* Read the conflict information recorded on LOCAL_ABSPATH in *CONFLICT, + an editable conflict skel. - Victim must be versioned or be part of a tree conflict. + If the node exists, but does not have a conflict set *CONFLICT to NULL, + otherwise return a SVN_ERR_WC_PATH_NOT_FOUND error. Allocate *CONFLICTS in RESULT_POOL and do temporary allocations in SCRATCH_POOL */ -/* ### Currently there can be just one property conflict recorded - per victim */ -/* ### This function will probably be removed. */ svn_error_t * -svn_wc__db_read_conflicts(const apr_array_header_t **conflicts, - svn_wc__db_t *db, - const char *local_abspath, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); +svn_wc__db_read_conflict(svn_skel_t **conflict, + svn_wc__db_t *db, + const char *local_abspath, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool); /* Return the kind of the node in DB at LOCAL_ABSPATH. The WORKING tree will @@ -2837,27 +2838,41 @@ svn_wc__db_wclock_owns_lock(svn_boolean_ */ /* Removes all references to LOCAL_ABSPATH from DB, while optionally leaving - tree conflicts and/or a not present node. + a not present node. This operation always recursively removes all nodes at and below LOCAL_ABSPATH from NODES and ACTUAL. If NOT_PRESENT_REVISION specifies a valid revision, leave a not_present - BASE node at local_abspath. (Requires an existing BASE node before removing) + BASE node at local_abspath of the specified status and kind. + (Requires an existing BASE node before removing) + + If DESTROY_WC is TRUE, this operation *installs* workqueue operations to + update the local filesystem after the database operation. If DESTROY_CHANGES + is FALSE, modified and unversioned files are left after running this + operation (and the WQ). If DESTROY_CHANGES and DESTROY_WC are TRUE, + LOCAL_ABSPATH and everything below it will be removed by the WQ. + + + Note: Unlike many similar functions it is a valid scenario for this + function to be called on a wcroot! In this case it will just leave the root + record in BASE */ svn_error_t * -svn_wc__db_op_remove_node(svn_wc__db_t *db, +svn_wc__db_op_remove_node(svn_boolean_t *left_changes, + svn_wc__db_t *db, const char *local_abspath, + svn_boolean_t destroy_wc, + svn_boolean_t destroy_changes, svn_revnum_t not_present_revision, + svn_wc__db_status_t not_present_status, svn_kind_t not_present_kind, + const svn_skel_t *conflict, + const svn_skel_t *work_items, + svn_cancel_func_t cancel_func, + void *cancel_baton, apr_pool_t *scratch_pool); -/* Remove the WORKING_NODE row of LOCAL_ABSPATH in DB. */ -svn_error_t * -svn_wc__db_temp_op_remove_working(svn_wc__db_t *db, - const char *local_abspath, - apr_pool_t *scratch_pool); - /* Sets the depth of LOCAL_ABSPATH in its working copy to DEPTH using DB. Returns SVN_ERR_WC_PATH_NOT_FOUND if LOCAL_ABSPATH is not a BASE directory @@ -2953,21 +2968,6 @@ svn_wc__db_temp_op_make_copy(svn_wc__db_ const char *local_abspath, apr_pool_t *scratch_pool); -/* Add a new directory in BASE, whether WORKING nodes exist or not. Mark it - as incomplete and with revision REVISION. If REPOS_RELPATH is not NULL, - apply REPOS_RELPATH, REPOS_ROOT_URL and REPOS_UUID. - Perform all temporary allocations in SCRATCH_POOL. - */ -svn_error_t * -svn_wc__db_temp_op_set_new_dir_to_incomplete(svn_wc__db_t *db, - const char *local_abspath, - const char *repos_relpath, - const char *repos_root_url, - const char *repos_uuid, - svn_revnum_t revision, - svn_depth_t depth, - apr_pool_t *scratch_pool); - /* Close the wc root LOCAL_ABSPATH and remove any per-directory handles associated with it. */ svn_error_t * Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.c?rev=1425415&r1=1425414&r2=1425415&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.c (original) +++ subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.c Sun Dec 23 06:03:14 2012 @@ -42,7 +42,6 @@ /* Workqueue operation names. */ -#define OP_BASE_REMOVE "base-remove" #define OP_FILE_COMMIT "file-commit" #define OP_FILE_INSTALL "file-install" #define OP_FILE_REMOVE "file-remove" @@ -50,10 +49,15 @@ #define OP_FILE_COPY_TRANSLATED "file-translate" #define OP_SYNC_FILE_FLAGS "sync-file-flags" #define OP_PREJ_INSTALL "prej-install" +#define OP_DIRECTORY_REMOVE "dir-remove" + +#define OP_POSTUPGRADE "postupgrade" + +/* Legacy items */ +#define OP_BASE_REMOVE "base-remove" #define OP_RECORD_FILEINFO "record-fileinfo" #define OP_TMP_SET_TEXT_CONFLICT_MARKERS "tmp-set-text-conflict-markers" #define OP_TMP_SET_PROPERTY_CONFLICT_MARKER "tmp-set-property-conflict-marker" -#define OP_POSTUPGRADE "postupgrade" /* For work queue debugging. Generates output about its operation. */ /* #define SVN_DEBUG_WORK_QUEUE */ @@ -100,110 +104,7 @@ get_and_record_fileinfo(svn_wc__db_t *db /* Removes a BASE_NODE and all it's data, leaving any adds and copies as is. Do this as a depth first traversal to make sure than any parent still exists on error conditions. - - ### This function needs review for 4th tree behavior.*/ -static svn_error_t * -remove_base_node(svn_wc__db_t *db, - const char *local_abspath, - svn_cancel_func_t cancel_func, - void *cancel_baton, - apr_pool_t *scratch_pool) -{ - svn_wc__db_status_t base_status, wrk_status; - svn_kind_t base_kind, wrk_kind; - svn_boolean_t have_base, have_work; - svn_error_t *err; - - if (cancel_func) - SVN_ERR(cancel_func(cancel_baton)); - - err = svn_wc__db_read_info(&wrk_status, &wrk_kind, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, - &have_base, NULL, &have_work, - db, local_abspath, scratch_pool, scratch_pool); - if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND) - { - /* No node to delete, this can happen when the wq item is rerun. */ - svn_error_clear(err); - return SVN_NO_ERROR; - } - - if(! have_base) - /* No base node to delete, this can happen when the wq item is rerun. */ - return SVN_NO_ERROR; - - if (wrk_status == svn_wc__db_status_normal - || wrk_status == svn_wc__db_status_not_present - || wrk_status == svn_wc__db_status_server_excluded) - { - base_status = wrk_status; - base_kind = wrk_kind; - } - else - SVN_ERR(svn_wc__db_base_get_info(&base_status, &base_kind, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - db, local_abspath, - scratch_pool, scratch_pool)); - - /* Children first */ - if (base_kind == svn_kind_dir - && (base_status == svn_wc__db_status_normal - || base_status == svn_wc__db_status_incomplete)) - { - const apr_array_header_t *children; - apr_pool_t *iterpool = svn_pool_create(scratch_pool); - int i; - - SVN_ERR(svn_wc__db_base_get_children(&children, db, local_abspath, - scratch_pool, iterpool)); - - for (i = 0; i < children->nelts; i++) - { - const char *child_name = APR_ARRAY_IDX(children, i, const char *); - const char *child_abspath; - - svn_pool_clear(iterpool); - - child_abspath = svn_dirent_join(local_abspath, child_name, iterpool); - - SVN_ERR(remove_base_node(db, child_abspath, cancel_func, cancel_baton, - iterpool)); - } - - svn_pool_destroy(iterpool); - } - - if (base_status == svn_wc__db_status_normal - && wrk_status != svn_wc__db_status_added - && wrk_status != svn_wc__db_status_excluded) - { - if (wrk_status != svn_wc__db_status_deleted - && (base_kind == svn_kind_file - || base_kind == svn_kind_symlink)) - { - SVN_ERR(svn_io_remove_file2(local_abspath, TRUE, scratch_pool)); - } - else if (base_kind == svn_kind_dir - && wrk_status != svn_wc__db_status_deleted) - { - err = svn_io_dir_remove_nonrecursive(local_abspath, scratch_pool); - if (err && (APR_STATUS_IS_ENOENT(err->apr_err) - || SVN__APR_STATUS_IS_ENOTDIR(err->apr_err) - || APR_STATUS_IS_ENOTEMPTY(err->apr_err))) - svn_error_clear(err); - else - SVN_ERR(err); - } - } - - SVN_ERR(svn_wc__db_base_remove(db, local_abspath, scratch_pool)); - - return SVN_NO_ERROR; -} - + */ /* Process the OP_REMOVE_BASE work item WORK_ITEM. * See svn_wc__wq_build_remove_base() which generates this work item. @@ -220,8 +121,6 @@ run_base_remove(svn_wc__db_t *db, const char *local_relpath; const char *local_abspath; svn_revnum_t not_present_rev = SVN_INVALID_REVNUM; - svn_kind_t not_present_kind; - const char *repos_relpath, *repos_root_url, *repos_uuid; apr_int64_t val; local_relpath = apr_pstrmemdup(scratch_pool, arg1->data, arg1->len); @@ -234,23 +133,6 @@ run_base_remove(svn_wc__db_t *db, not_present_rev = (svn_revnum_t)val; SVN_ERR(svn_skel__parse_int(&val, arg1->next->next, scratch_pool)); - not_present_kind = (svn_kind_t)val; - - if (SVN_IS_VALID_REVNUM(not_present_rev)) - { - const char *dir_abspath, *name; - - /* This wq operation is restartable, so we can't assume the node - to be here. But we can assume that the parent is still there */ - svn_dirent_split(&dir_abspath, &name, local_abspath, scratch_pool); - - SVN_ERR(svn_wc__db_scan_base_repos(&repos_relpath, &repos_root_url, - &repos_uuid, - db, dir_abspath, - scratch_pool, scratch_pool)); - - repos_relpath = svn_relpath_join(repos_relpath, name, scratch_pool); - } } else { @@ -262,9 +144,9 @@ run_base_remove(svn_wc__db_t *db, if (keep_not_present) { - SVN_ERR(svn_wc__db_base_get_info(NULL, ¬_present_kind, - ¬_present_rev, &repos_relpath, - &repos_root_url, &repos_uuid, NULL, + SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, + ¬_present_rev, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, db, local_abspath, @@ -272,45 +154,8 @@ run_base_remove(svn_wc__db_t *db, } } - SVN_ERR(remove_base_node(db, local_abspath, - cancel_func, cancel_baton, - scratch_pool)); - - if (SVN_IS_VALID_REVNUM(not_present_rev)) - { - SVN_ERR(svn_wc__db_base_add_not_present_node(db, local_abspath, - repos_relpath, - repos_root_url, - repos_uuid, - not_present_rev, - not_present_kind, - NULL, - NULL, - scratch_pool)); - } - - return SVN_NO_ERROR; -} - -svn_error_t * -svn_wc__wq_build_base_remove(svn_skel_t **work_item, - svn_wc__db_t *db, - const char *local_abspath, - svn_revnum_t not_present_revision, - svn_kind_t not_present_kind, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool) -{ - const char *local_relpath; - *work_item = svn_skel__make_empty_list(result_pool); - - SVN_ERR(svn_wc__db_to_relpath(&local_relpath, db, local_abspath, - local_abspath, result_pool, scratch_pool)); - - svn_skel__prepend_int(not_present_kind, *work_item, result_pool); - svn_skel__prepend_int(not_present_revision, *work_item, result_pool); - svn_skel__prepend_str(local_relpath, *work_item, result_pool); - svn_skel__prepend_str(OP_BASE_REMOVE, *work_item, result_pool); + SVN_ERR(svn_wc__db_base_remove(db, local_abspath, FALSE, not_present_rev, + NULL, NULL, scratch_pool)); return SVN_NO_ERROR; } @@ -894,6 +739,7 @@ run_file_remove(svn_wc__db_t *db, svn_error_t * svn_wc__wq_build_file_remove(svn_skel_t **work_item, svn_wc__db_t *db, + const char *wri_abspath, const char *local_abspath, apr_pool_t *result_pool, apr_pool_t *scratch_pool) @@ -901,7 +747,7 @@ svn_wc__wq_build_file_remove(svn_skel_t const char *local_relpath; *work_item = svn_skel__make_empty_list(result_pool); - SVN_ERR(svn_wc__db_to_relpath(&local_relpath, db, local_abspath, + SVN_ERR(svn_wc__db_to_relpath(&local_relpath, db, wri_abspath, local_abspath, result_pool, scratch_pool)); svn_skel__prepend_str(local_relpath, *work_item, result_pool); @@ -912,6 +758,87 @@ svn_wc__wq_build_file_remove(svn_skel_t /* ------------------------------------------------------------------------ */ +/* OP_DIRECTORY_REMOVE */ + +/* Process the OP_FILE_REMOVE work item WORK_ITEM. + * See svn_wc__wq_build_file_remove() which generates this work item. + * Implements (struct work_item_dispatch).func. */ +static svn_error_t * +run_dir_remove(svn_wc__db_t *db, + const svn_skel_t *work_item, + const char *wri_abspath, + svn_cancel_func_t cancel_func, + void *cancel_baton, + apr_pool_t *scratch_pool) +{ + const svn_skel_t *arg1 = work_item->children->next; + const char *local_relpath; + const char *local_abspath; + svn_boolean_t recursive; + + local_relpath = apr_pstrmemdup(scratch_pool, arg1->data, arg1->len); + SVN_ERR(svn_wc__db_from_relpath(&local_abspath, db, wri_abspath, + local_relpath, scratch_pool, scratch_pool)); + + recursive = FALSE; + if (arg1->next) + { + apr_int64_t val; + SVN_ERR(svn_skel__parse_int(&val, arg1->next, scratch_pool)); + + recursive = (val != 0); + } + + /* Remove the path, no worrying if it isn't there. */ + if (recursive) + return svn_error_trace( + svn_io_remove_dir2(local_abspath, TRUE, + cancel_func, cancel_baton, + scratch_pool)); + else + { + svn_error_t *err; + + err = svn_io_dir_remove_nonrecursive(local_abspath, scratch_pool); + + if (err && (APR_STATUS_IS_ENOENT(err->apr_err) + || SVN__APR_STATUS_IS_ENOTDIR(err->apr_err) + || APR_STATUS_IS_ENOTEMPTY(err->apr_err))) + { + svn_error_clear(err); + err = NULL; + } + + return svn_error_trace(err); + } +} + +svn_error_t * +svn_wc__wq_build_dir_remove(svn_skel_t **work_item, + svn_wc__db_t *db, + const char *wri_abspath, + const char *local_abspath, + svn_boolean_t recursive, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool) +{ + const char *local_relpath; + *work_item = svn_skel__make_empty_list(result_pool); + + SVN_ERR(svn_wc__db_to_relpath(&local_relpath, db, wri_abspath, + local_abspath, result_pool, scratch_pool)); + + if (recursive) + svn_skel__prepend_int(TRUE, *work_item, result_pool); + + svn_skel__prepend_str(local_relpath, *work_item, result_pool); + svn_skel__prepend_str(OP_DIRECTORY_REMOVE, *work_item, result_pool); + + return SVN_NO_ERROR; +} + +/* ------------------------------------------------------------------------ */ + /* OP_FILE_MOVE */ /* Process the OP_FILE_MOVE work item WORK_ITEM. @@ -1153,29 +1080,34 @@ run_prej_install(svn_wc__db_t *db, const svn_skel_t *arg1 = work_item->children->next; const char *local_relpath; const char *local_abspath; - const svn_skel_t *conflict_skel; + svn_skel_t *conflicts; + const svn_skel_t *prop_conflict_skel; const char *tmp_prejfile_abspath; const char *prejfile_abspath; local_relpath = apr_pstrmemdup(scratch_pool, arg1->data, arg1->len); SVN_ERR(svn_wc__db_from_relpath(&local_abspath, db, wri_abspath, local_relpath, scratch_pool, scratch_pool)); + + SVN_ERR(svn_wc__db_read_conflict(&conflicts, db, local_abspath, + scratch_pool, scratch_pool)); + + SVN_ERR(svn_wc__conflict_read_prop_conflict(&prejfile_abspath, + NULL, NULL, NULL, NULL, + db, local_abspath, conflicts, + scratch_pool, scratch_pool)); + if (arg1->next != NULL) - conflict_skel = arg1->next; + prop_conflict_skel = arg1->next; else SVN_ERR_MALFUNCTION(); /* ### wc_db can't provide it ... yet. */ /* Construct a property reject file in the temporary area. */ SVN_ERR(svn_wc__create_prejfile(&tmp_prejfile_abspath, db, local_abspath, - conflict_skel, + prop_conflict_skel, scratch_pool, scratch_pool)); - /* Get the (stored) name of where it should go. */ - SVN_ERR(svn_wc__get_prejfile_abspath(&prejfile_abspath, db, local_abspath, - scratch_pool, scratch_pool)); - SVN_ERR_ASSERT(prejfile_abspath != NULL); - /* ... and atomically move it into place. */ SVN_ERR(svn_io_file_rename(tmp_prejfile_abspath, prejfile_abspath, @@ -1331,41 +1263,24 @@ run_set_text_conflict_markers(svn_wc__db ### to set the right fields. */ { - /* Check if we also have a property conflict... */ - const apr_array_header_t *conflicts; - svn_skel_t *conflict_skel; - int i; - - conflict_skel = svn_wc__conflict_skel_create(scratch_pool); + /* Check if we should combine with a property conflict... */ + svn_skel_t *conflicts; - SVN_ERR(svn_wc__db_read_conflicts(&conflicts, db, local_abspath, - scratch_pool, scratch_pool)); + SVN_ERR(svn_wc__db_read_conflict(&conflicts, db, local_abspath, + scratch_pool, scratch_pool)); - if (conflicts) - for (i = 0; i < conflicts->nelts; i++) - { - svn_wc_conflict_description2_t *desc = - APR_ARRAY_IDX(conflicts, i, svn_wc_conflict_description2_t *); - apr_hash_t *prop_names; - - if (desc->kind != svn_wc_conflict_kind_property) - continue; - - prop_names = apr_hash_make(scratch_pool); - - /* Add the absolute minimal property conflict */ - SVN_ERR(svn_wc__conflict_skel_add_prop_conflict(conflict_skel, db, - local_abspath, - desc->their_abspath, - NULL, NULL, NULL, - prop_names, - scratch_pool, - scratch_pool)); + if (! conflicts) + { + /* No conflict exists, create a basic skel */ + conflicts = svn_wc__conflict_skel_create(scratch_pool); - break; - } + SVN_ERR(svn_wc__conflict_skel_set_op_update(conflicts, NULL, + scratch_pool, + scratch_pool)); + } - SVN_ERR(svn_wc__conflict_skel_add_text_conflict(conflict_skel, db, + /* Add the text conflict to the existing onflict */ + SVN_ERR(svn_wc__conflict_skel_add_text_conflict(conflicts, db, local_abspath, wrk_abspath, old_abspath, @@ -1373,12 +1288,7 @@ run_set_text_conflict_markers(svn_wc__db scratch_pool, scratch_pool)); - /* ### Set some 'none' operation? */ - SVN_ERR(svn_wc__conflict_skel_set_op_update(conflict_skel, NULL, - scratch_pool, - scratch_pool)); - - SVN_ERR(svn_wc__db_op_mark_conflict(db, local_abspath, conflict_skel, + SVN_ERR(svn_wc__db_op_mark_conflict(db, local_abspath, conflicts, NULL, scratch_pool)); } return SVN_NO_ERROR; @@ -1409,7 +1319,7 @@ run_set_property_conflict_marker(svn_wc_ arg = arg->next; local_relpath = arg->len ? apr_pstrmemdup(scratch_pool, arg->data, arg->len) - : NULL; + : NULL; if (local_relpath) SVN_ERR(svn_wc__db_from_relpath(&prej_abspath, db, wri_abspath, @@ -1417,41 +1327,25 @@ run_set_property_conflict_marker(svn_wc_ scratch_pool, scratch_pool)); { - /* Check if we also have a property conflict... */ - const apr_array_header_t *conflicts; - svn_skel_t *conflict_skel; - int i; + /* Check if we should combine with a text conflict... */ + svn_skel_t *conflicts; apr_hash_t *prop_names; - conflict_skel = svn_wc__conflict_skel_create(scratch_pool); - - SVN_ERR(svn_wc__db_read_conflicts(&conflicts, db, local_abspath, - scratch_pool, scratch_pool)); - - if (conflicts) - for (i = 0; i < conflicts->nelts; i++) - { - svn_wc_conflict_description2_t *desc = - APR_ARRAY_IDX(conflicts, i, svn_wc_conflict_description2_t *); - - if (desc->kind != svn_wc_conflict_kind_text) - continue; + SVN_ERR(svn_wc__db_read_conflict(&conflicts, db, local_abspath, + scratch_pool, scratch_pool)); - /* Add the existing text conflict */ - SVN_ERR(svn_wc__conflict_skel_add_text_conflict( - conflict_skel, db, - local_abspath, - desc->my_abspath, - desc->base_abspath, - desc->their_abspath, - scratch_pool, - scratch_pool)); + if (! conflicts) + { + /* No conflict exists, create a basic skel */ + conflicts = svn_wc__conflict_skel_create(scratch_pool); - break; - } + SVN_ERR(svn_wc__conflict_skel_set_op_update(conflicts, NULL, + scratch_pool, + scratch_pool)); + } prop_names = apr_hash_make(scratch_pool); - SVN_ERR(svn_wc__conflict_skel_add_prop_conflict(conflict_skel, db, + SVN_ERR(svn_wc__conflict_skel_add_prop_conflict(conflicts, db, local_abspath, prej_abspath, NULL, NULL, NULL, @@ -1459,12 +1353,7 @@ run_set_property_conflict_marker(svn_wc_ scratch_pool, scratch_pool)); - /* ### Set some 'none' operation? */ - SVN_ERR(svn_wc__conflict_skel_set_op_update(conflict_skel, NULL, - scratch_pool, - scratch_pool)); - - SVN_ERR(svn_wc__db_op_mark_conflict(db, local_abspath, conflict_skel, + SVN_ERR(svn_wc__db_op_mark_conflict(db, local_abspath, conflicts, NULL, scratch_pool)); } return SVN_NO_ERROR; @@ -1480,14 +1369,17 @@ static const struct work_item_dispatch d { OP_FILE_COPY_TRANSLATED, run_file_copy_translated }, { OP_SYNC_FILE_FLAGS, run_sync_file_flags }, { OP_PREJ_INSTALL, run_prej_install }, - { OP_RECORD_FILEINFO, run_record_fileinfo }, - { OP_BASE_REMOVE, run_base_remove }, - { OP_TMP_SET_TEXT_CONFLICT_MARKERS, run_set_text_conflict_markers }, - { OP_TMP_SET_PROPERTY_CONFLICT_MARKER, run_set_property_conflict_marker }, + { OP_DIRECTORY_REMOVE, run_dir_remove }, /* Upgrade steps */ { OP_POSTUPGRADE, run_postupgrade }, + /* Legacy workqueue items. No longer created */ + { OP_BASE_REMOVE, run_base_remove }, + { OP_RECORD_FILEINFO, run_record_fileinfo }, + { OP_TMP_SET_TEXT_CONFLICT_MARKERS, run_set_text_conflict_markers }, + { OP_TMP_SET_PROPERTY_CONFLICT_MARKER, run_set_property_conflict_marker }, + /* Sentinel. */ { NULL } }; Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h?rev=1425415&r1=1425414&r2=1425415&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h (original) +++ subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h Sun Dec 23 06:03:14 2012 @@ -114,14 +114,28 @@ svn_wc__wq_build_file_install(svn_skel_t /* Set *WORK_ITEM to a new work item that will remove a single - file. */ + file LOCAL_ABSPATH from the working copy identified by the pair DB, + WRI_ABSPATH. */ svn_error_t * svn_wc__wq_build_file_remove(svn_skel_t **work_item, svn_wc__db_t *db, + const char *wri_abspath, const char *local_abspath, apr_pool_t *result_pool, apr_pool_t *scratch_pool); +/* Set *WORK_ITEM to a new work item that will remove a single + directory or if RECURSIVE is TRUE a directory with all its + descendants. */ +svn_error_t * +svn_wc__wq_build_dir_remove(svn_skel_t **work_item, + svn_wc__db_t *db, + const char *wri_abspath, + const char *local_abspath, + svn_boolean_t recursive, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool); + /* Set *WORK_ITEM to a new work item that describes a move of a file or directory from SRC_ABSPATH to DST_ABSPATH, ready for storing in the working copy managing DST_ABSPATH. @@ -182,24 +196,6 @@ svn_wc__wq_build_prej_install(svn_skel_t apr_pool_t *result_pool, apr_pool_t *scratch_pool); -/* Set *WORK_ITEM to a new work item that will remove all the data of - the BASE_NODE of LOCAL_ABSPATH and all it's descendants, but keeping - any WORKING_NODE data. - - This function doesn't check for local modifications of the text files - as these would have triggered a tree conflict before. - - ### This is only used from update_editor.c's do_entry_deletion(). - */ -svn_error_t * -svn_wc__wq_build_base_remove(svn_skel_t **work_item, - svn_wc__db_t *db, - const char *local_abspath, - svn_revnum_t not_present_revision, - svn_kind_t not_present_kind, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - /* Handle the final post-commit step of retranslating and recording the working copy state of a committed file. Modified: subversion/branches/javahl-ra/subversion/mod_dav_svn/liveprops.c URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/mod_dav_svn/liveprops.c?rev=1425415&r1=1425414&r2=1425415&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/mod_dav_svn/liveprops.c (original) +++ subversion/branches/javahl-ra/subversion/mod_dav_svn/liveprops.c Sun Dec 23 06:03:14 2012 @@ -281,7 +281,7 @@ insert_prop_internal(const dav_resource const char *value = NULL; const char *s; const dav_liveprop_spec *info; - int global_ns; + long global_ns; svn_error_t *serr; /* ### TODO proper errors */ @@ -785,11 +785,11 @@ insert_prop_internal(const dav_resource if (what == DAV_PROP_INSERT_NAME || (what == DAV_PROP_INSERT_VALUE && *value == '\0')) { - s = apr_psprintf(result_pool, "" DEBUG_CR, global_ns, + s = apr_psprintf(result_pool, "" DEBUG_CR, global_ns, info->name); } else if (what == DAV_PROP_INSERT_VALUE) { - s = apr_psprintf(result_pool, "%s" DEBUG_CR, + s = apr_psprintf(result_pool, "%s" DEBUG_CR, global_ns, info->name, value, global_ns, info->name); } else { Modified: subversion/branches/javahl-ra/subversion/po/de.po URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/po/de.po?rev=1425415&r1=1425414&r2=1425415&view=diff ============================================================================== --- subversion/branches/javahl-ra/subversion/po/de.po [UTF-8] (original) +++ subversion/branches/javahl-ra/subversion/po/de.po [UTF-8] Sun Dec 23 06:03:14 2012 @@ -4973,9 +4973,8 @@ msgid "Creating pre-revprop-change hook" msgstr "Erzeuge Aktion »pre-revprop-change«" #: ../libsvn_repos/repos.c:618 -#, fuzzy msgid "Creating pre-obliterate hook" -msgstr "Erzeuge Aktion »pre-commit«" +msgstr "Erzeuge Aktion »pre-obliterate«" #: ../libsvn_repos/repos.c:846 msgid "Creating post-commit hook" @@ -4986,9 +4985,8 @@ msgid "Creating post-revprop-change hook msgstr "Erzeuge Aktion »post-revprop-change«" #: ../libsvn_repos/repos.c:1090 -#, fuzzy msgid "Creating post-obliterate hook" -msgstr "Erzeuge Aktion »post-commit«" +msgstr "Erzeuge Aktion »post-obliterate«" #: ../libsvn_repos/repos.c:1100 msgid "Creating conf directory" @@ -7142,14 +7140,14 @@ msgid "Error restoring text for '%s'" msgstr "Fehler beim Wiederherstellen des Textes für »%s«" #: ../libsvn_wc/workqueue.c:1294 -#, fuzzy, c-format +#, c-format msgid "Error processing post-commit work for '%s'" -msgstr "Fehler beim Bearbeiten des Befehls »%s« in »%s«" +msgstr "Fehler beim Verarbeiten der Arbeitsschritte nach Übertragung für »%s«" #: ../libsvn_wc/workqueue.c:2213 -#, fuzzy, c-format +#, c-format msgid "Unrecognized work item in the queue associated with '%s'" -msgstr "Unbekannter Revisionstyp für »%s« angefragt" +msgstr "Unbekannter Arbeitsschritt in Warteschlange von »%s« " #: ../svn/blame-cmd.c:302 ../svn/list-cmd.c:232 msgid "'verbose' option invalid in XML mode" @@ -7177,7 +7175,7 @@ msgstr "»%s« scheint keine URL zu sein #: ../svn/commit-cmd.c:107 #, c-format msgid "svn: warning: The depth of this commit is '%s', but copied directories will regardless be committed with depth '%s'. You must remove unwanted children of those directories in a separate commit.\n" -msgstr "" +msgstr "svn: Warnung: Die Tiefe dieser Übertragung ist »%s«, jedoch werden kopierte Verzeichnisse dennoch mit Tiefe »%s« übertragen. Sie müssen nicht gewollte Kinder dieser Verzeichnisse in einer gesonderten Übertragung entfernen.\n" #: ../svn/conflict-callbacks.c:158 msgid "||||||| ORIGINAL" @@ -7381,14 +7379,13 @@ msgstr "" "Ungültige Option; es gibt keine zusammengeführte Version zum Vergleichen.\n" "\n" -# CHECKME: proper English? #: ../svn/conflict-callbacks.c:651 -#, fuzzy, c-format +#, c-format msgid "" "Invalid option; cannot resolve property conflicts with an external merge tool.\n" "\n" msgstr "" -"Ungültige Option; Auswahl anhand von Konflikten ist in einer Binärdatei nicht möglich.\n" +"Ungültige Option; kann Konflikte in Eigenschaften nicht mit externem Werkzeug zum Zusammenführen auflösen\n" "\n" #: ../svn/conflict-callbacks.c:666 ../svn/conflict-callbacks.c:680 @@ -7934,11 +7931,8 @@ msgstr "" " übergeben" #: ../svn/main.c:210 -#, fuzzy msgid "limit operation by depth ARG ('empty', 'files',\n" -msgstr "" -"begrenzt Operation durch Tiefe PAR (»empty«,\n" -" »files«, »immediates« oder »infinity«)" +msgstr "begrenzt Operation durch Tiefe PAR (»empty«, »files«,\n" #: ../svn/main.c:214 msgid "set new working copy depth to ARG ('exclude',\n" @@ -8038,11 +8032,8 @@ msgstr "" " PAR lesen" #: ../svn/main.c:254 -#, fuzzy msgid "set user configuration option in the format:\n" -msgstr "" -"Benutzerkonfigurationsdateien aus dem Verzeichnis\n" -" PAR lesen" +msgstr "Konfigurationsoption in diesem Format setzen:\n" #: ../svn/main.c:261 msgid "enable automatic properties" @@ -8203,7 +8194,6 @@ msgstr "" " Falls angegeben, bestimmt REV, in welcher Revision zuerst nachgeschaut wird.\n" #: ../svn/main.c:433 -#, fuzzy msgid "" "Associate (or dissociate) changelist CLNAME with the named files.\n" "usage: 1. changelist CLNAME PATH...\n" @@ -8211,8 +8201,8 @@ msgid "" msgstr "" "Verknüpft Änderungsliste CLNAME (oder löst diese Verknüpfung)\n" "mit den angegebenen Dateien.\n" -"Aufruf: 1. changelist CLNAME ZIEL...\n" -" 2. changelist --remove ZIEL...\n" +"Aufruf: 1. changelist CLNAME PFAD...\n" +" 2. changelist --remove PFAD...\n" #: ../svn/main.c:439 msgid "" @@ -8265,7 +8255,6 @@ msgstr "" " die die durchgeführte Aktion beschreiben.\n" #: ../svn/main.c:466 -#, fuzzy msgid "" "Recursively clean up the working copy, removing locks, resuming\n" "unfinished operations, etc.\n" @@ -8273,7 +8262,7 @@ msgid "" msgstr "" "Räumt die Arbeitskopie rekursiv auf, gibt Sperren frei,\n" "nimmt unvollständige Operationen wieder auf, usw.\n" -"Aufruf: cleanup [PFAD...]\n" +"Aufruf: cleanup [AKPFAD...]\n" #: ../svn/main.c:472 msgid "" @@ -8340,7 +8329,6 @@ msgstr "" "von der Quelle der Kopie in das Ziel weiterzureichen.\n" #: ../svn/main.c:505 -#, fuzzy msgid "" "Remove files and directories from version control.\n" "usage: 1. delete PATH...\n" @@ -8356,8 +8344,7 @@ msgid "" " 2. Each item specified by a URL is deleted from the repository\n" " via an immediate commit.\n" msgstr "" -"Entfernt Dateien und Verzeichnisse aus der\n" -"Versionskontrolle.\n" +"Entfernt Dateien und Verzeichnisse aus der Versionskontrolle.\n" "Aufruf: 1. delete PFAD...\n" " 2. delete URL...\n" "\n" @@ -8367,10 +8354,10 @@ msgstr "" " die Option --keep-local wurde angegeben.\n" " PFAD(e), die nicht versioniert oder geändert sind, bzw.\n" " entsprechende Einträge enthalten, werden nur gelöscht, wenn\n" -" die Option »--force« angegeben wird.\n" +" die Optionen --force oder --keep-local angegeben wird.\n" "\n" -" 2. Jede URL wird mittels einer sofortigen Übertragung aus dem\n" -" Projektarchiv entfernt.\n" +" 2. Jedes mit einer URL angegebene Element wird mittels sofortiger\n" +" Übertragung aus dem Projektarchiv entfernt.\n" #: ../svn/main.c:521 msgid "" @@ -9564,6 +9551,8 @@ msgid "" "Upgrade the metadata storage format for a working copy.\n" "usage: upgrade WCPATH...\n" msgstr "" +"Überführt die Metadaten einer Arbeitskopie in ein neues Speicherformat\n" +"Aufruf: upgrade AKPATH...\n" #: ../svn/main.c:1221 ../svnadmin/main.c:86 ../svnlook/main.c:354 #: ../svnsync/main.c:263 @@ -9585,7 +9574,7 @@ msgstr "-c kann nicht mit --old verwende #: ../svn/main.c:1391 #, c-format msgid "Negative number in range (%s) not supported with -c" -msgstr "" +msgstr "Negative Zahl im Bereich (%s) ist mit -c nicht unterstützt" #: ../svn/main.c:1404 #, c-format @@ -9855,42 +9844,42 @@ msgstr "Konflikt von »%s« aufgelöst\n #: ../svn/notify.c:320 ../svn/notify.c:360 #, c-format msgid "> applied hunk ## -%lu,%lu +%lu,%lu ## with offset %s" -msgstr "" +msgstr "> Abschnitt ## -%lu,%lu +%lu,%lu ## mit Versatz %s angewandt" #: ../svn/notify.c:337 ../svn/notify.c:374 #, c-format msgid "> applied hunk @@ -%lu,%lu +%lu,%lu @@ with offset %s" -msgstr "" +msgstr "> Abschnitt @@ -%lu,%lu +%lu,%lu @@ mit Versatz %s angewandt" #: ../svn/notify.c:395 #, c-format msgid "> applied hunk ## -%lu,%lu +%lu,%lu ## with fuzz %d (%s)\n" -msgstr "" +msgstr "> Abschnitt ## -%lu,%lu +%lu,%lu ## mit Unschärfe %d (%s) angewandt\n" #: ../svn/notify.c:405 #, c-format msgid "> applied hunk @@ -%lu,%lu +%lu,%lu @@ with fuzz %d\n" -msgstr "" +msgstr "> Abschnitt @@ -%lu,%lu +%lu,%lu @@ mit Unschärfe %d angewandt\n" #: ../svn/notify.c:423 #, c-format msgid "> rejected hunk ## -%lu,%lu +%lu,%lu ## (%s)\n" -msgstr "" +msgstr "> Abschnitt ## -%lu,%lu +%lu,%lu ## (%s) zurückgewiesen\n" #: ../svn/notify.c:432 #, c-format msgid "> rejected hunk @@ -%lu,%lu +%lu,%lu @@\n" -msgstr "" +msgstr "> Abschnitt @@ -%lu,%lu +%lu,%lu @@ zurückgewiesen\n" #: ../svn/notify.c:446 #, c-format msgid "> hunk ## -%lu,%lu +%lu,%lu ## already applied (%s)\n" -msgstr "" +msgstr "> Abschnitt ## -%lu,%lu +%lu,%lu ## bereits angewandt (%s)\n" #: ../svn/notify.c:456 #, c-format msgid "> hunk @@ -%lu,%lu +%lu,%lu @@ already applied\n" -msgstr "" +msgstr "> Abschnitt @@ -%lu,%lu +%lu,%lu @@ bereits angewandt\n" # Currently this is used for checkouts and switches too. If we # want different output, we'll have to add new actions. @@ -10157,7 +10146,7 @@ msgstr "Ziel muss die Revision als Zahl #: ../svn/obliterate-cmd.c:119 msgid "Target must specify a URL" -msgstr "" +msgstr "Ziel muss eine URL angeben" #: ../svn/propdel-cmd.c:117 #, c-format @@ -10303,7 +10292,7 @@ msgstr "hinzugefügt" #: ../svn/tree-conflicts.c:41 ../svn/tree-conflicts.c:63 msgid "replace" -msgstr "" +msgstr "ersetzt" #: ../svn/tree-conflicts.c:60 msgid "missing" @@ -11154,7 +11143,7 @@ msgstr "Filterstatistik nicht anzeigen." #: ../svndumpfilter/main.c:926 msgid "Treat the path prefixes as file glob patterns." -msgstr "" +msgstr "Pfadpräfix als Dateiplatzhalter behandeln." #: ../svndumpfilter/main.c:928 msgid "Remove revisions emptied by filtering." @@ -11754,7 +11743,7 @@ msgstr "Versuchen Sie »svnlook help« f #: ../svnrdump/load_editor.c:97 ../svnsync/main.c:351 msgid "Target server does not support atomic revision property edits; consider upgrading it to 1.7 or using an external locking program" -msgstr "" +msgstr "Zielserver unterstützt keine atomaren Änderungen von Revisionseigenschaften; Verwenden Sie entweder 1.7 oder ein externes Programm zum Sperren." #: ../svnrdump/load_editor.c:106 ../svnsync/main.c:360 #, c-format @@ -11775,7 +11764,7 @@ msgstr "Konnte Sperre für Zielprojektar #: ../svnrdump/load_editor.c:684 msgid "\"svnrdump load\"'s lock was stolen; can't remove it" -msgstr "" +msgstr "Die Sperre von »svnrump load« wurde gestohlen und konnte nicht entfernt werden" #: ../svnrdump/svnrdump.c:58 msgid "" @@ -11784,6 +11773,10 @@ msgid "" "Dump revisions LOWER to UPPER of repository at remote URL to stdout in a 'dumpfile' portable format.\n" "If only LOWER is given, dump that one revision.\n" msgstr "" +"Aufruf: svnrdump dump URL [-r VON[:BIS]]\n" +"\n" +"Gibt einen Abzug der Revisionen VON:BIS eines Projektarchivs an der entferten URL in einem portablen »Dump«-Format aus.\n" +"Falls nur VON angegeben wurde, wird nur diese Revision ausgegeben.\n" #: ../svnrdump/svnrdump.c:64 msgid "" @@ -11791,6 +11784,9 @@ msgid "" "\n" "Load a 'dumpfile' given on stdin to a repository at remote URL.\n" msgstr "" +"Aufruf: svnrdump load URL\n" +"\n" +"Liest einen Datenstrom im »Dump«-Format von der Standardeingabe in ein Projektarchive an entfertner URL.\n" #: ../svnrdump/svnrdump.c:69 msgid "" @@ -11839,7 +11835,7 @@ msgstr "Revision %ld existiert nicht.\n" #: ../svnrdump/svnrdump.c:592 #, c-format msgid "LOWER cannot be greater than UPPER.\n" -msgstr "" +msgstr "VON kann nicht größer als BIS sein.\n" #: ../svnserve/cyrus_auth.c:264 #, c-format @@ -11928,6 +11924,11 @@ msgid "" " at the same time is not supported in daemon mode.\n" " Use inetd mode or tunnel mode if you need this.]" msgstr "" +"Bevorzuge IPv6 beim Auflösen des abzuhörenden Rechnernamens\n" +" [IPv4 ist als bevorzugt vorgegeben. Gleichzeitige\n" +" Verwendung von IPv4 und IPv6 ist im Daemon-Modus\n" +" nicht unterstützt. Verwenden Sie bei Bedarf inetd\n" +" oder den Tunnel-Modus." #. ### Making the assumption here that WIN32 never has fork and so #. * ### this option never exists when --service exists.