revert.c (302408) | revert.c (362181) |
---|---|
1/* 2 * revert.c: Handling of the in-wc side of the revert operation 3 * 4 * ==================================================================== 5 * Licensed to the Apache Software Foundation (ASF) under one 6 * or more contributor license agreements. See the NOTICE file 7 * distributed with this work for additional information 8 * regarding copyright ownership. The ASF licenses this file --- 48 unchanged lines hidden (view full) --- 57 58 - For files, svn_wc_remove_from_revision_control(), baby. 59 60 - Added directories may contain nothing but added children, and 61 reverting the addition of a directory necessarily means reverting 62 the addition of all the directory's children. Again, 63 svn_wc_remove_from_revision_control() should do the trick. 64 | 1/* 2 * revert.c: Handling of the in-wc side of the revert operation 3 * 4 * ==================================================================== 5 * Licensed to the Apache Software Foundation (ASF) under one 6 * or more contributor license agreements. See the NOTICE file 7 * distributed with this work for additional information 8 * regarding copyright ownership. The ASF licenses this file --- 48 unchanged lines hidden (view full) --- 57 58 - For files, svn_wc_remove_from_revision_control(), baby. 59 60 - Added directories may contain nothing but added children, and 61 reverting the addition of a directory necessarily means reverting 62 the addition of all the directory's children. Again, 63 svn_wc_remove_from_revision_control() should do the trick. 64 |
65 - For a copy, we remove the item from disk as well. The thinking here 66 is that Subversion is responsible for the existence of the item: it 67 must have been created by something like 'svn copy' or 'svn merge'. 68 69 - For a plain add, removing the file or directory from disk is optional. 70 The user's idea of Subversion's involvement could be either that 71 Subversion was just responsible for adding an existing item to version 72 control, as with 'svn add', and so should not be responsible for 73 deleting it from disk; or that Subversion is responsible for the 74 existence of the item, e.g. if created by 'svn patch' or svn mkdir'. 75 It depends on the use case. 76 |
|
65 Deletes 66 67 - Restore properties to their unmodified state. 68 69 - For files, restore the pristine contents, and reset the schedule 70 to 'normal'. 71 72 - For directories, reset the schedule to 'normal'. All children --- 207 unchanged lines hidden (view full) --- 280static svn_error_t * 281revert_restore(svn_boolean_t *run_wq, 282 svn_wc__db_t *db, 283 const char *local_abspath, 284 svn_depth_t depth, 285 svn_boolean_t metadata_only, 286 svn_boolean_t use_commit_times, 287 svn_boolean_t revert_root, | 77 Deletes 78 79 - Restore properties to their unmodified state. 80 81 - For files, restore the pristine contents, and reset the schedule 82 to 'normal'. 83 84 - For directories, reset the schedule to 'normal'. All children --- 207 unchanged lines hidden (view full) --- 292static svn_error_t * 293revert_restore(svn_boolean_t *run_wq, 294 svn_wc__db_t *db, 295 const char *local_abspath, 296 svn_depth_t depth, 297 svn_boolean_t metadata_only, 298 svn_boolean_t use_commit_times, 299 svn_boolean_t revert_root, |
300 svn_boolean_t added_keep_local, |
|
288 const struct svn_wc__db_info_t *info, 289 svn_cancel_func_t cancel_func, 290 void *cancel_baton, 291 svn_wc_notify_func2_t notify_func, 292 void *notify_baton, 293 apr_pool_t *scratch_pool) 294{ 295 svn_wc__db_status_t status; --- 43 unchanged lines hidden (view full) --- 339 { 340 status = info->status; 341 kind = info->kind; 342 recorded_size = info->recorded_size; 343 recorded_time = info->recorded_time; 344 } 345 else 346 { | 301 const struct svn_wc__db_info_t *info, 302 svn_cancel_func_t cancel_func, 303 void *cancel_baton, 304 svn_wc_notify_func2_t notify_func, 305 void *notify_baton, 306 apr_pool_t *scratch_pool) 307{ 308 svn_wc__db_status_t status; --- 43 unchanged lines hidden (view full) --- 352 { 353 status = info->status; 354 kind = info->kind; 355 recorded_size = info->recorded_size; 356 recorded_time = info->recorded_time; 357 } 358 else 359 { |
347 if (!copied_here) | 360 if (added_keep_local && !copied_here) |
348 { | 361 { |
362 /* It is a plain add, and we want to keep the local file/dir. */ |
|
349 if (notify_func && notify_required) 350 notify_func(notify_baton, 351 svn_wc_create_notify(local_abspath, 352 svn_wc_notify_revert, 353 scratch_pool), 354 scratch_pool); 355 356 if (notify_func) 357 SVN_ERR(svn_wc__db_revert_list_notify(notify_func, notify_baton, 358 db, local_abspath, 359 scratch_pool)); 360 return SVN_NO_ERROR; 361 } | 363 if (notify_func && notify_required) 364 notify_func(notify_baton, 365 svn_wc_create_notify(local_abspath, 366 svn_wc_notify_revert, 367 scratch_pool), 368 scratch_pool); 369 370 if (notify_func) 371 SVN_ERR(svn_wc__db_revert_list_notify(notify_func, notify_baton, 372 db, local_abspath, 373 scratch_pool)); 374 return SVN_NO_ERROR; 375 } |
376 else if (!copied_here) 377 { 378 /* It is a plain add, and we don't want to keep the local file/dir. */ 379 status = svn_wc__db_status_not_present; 380 kind = svn_node_none; 381 recorded_size = SVN_INVALID_FILESIZE; 382 recorded_time = 0; 383 } |
|
362 else 363 { | 384 else 385 { |
386 /* It is a copy, so we don't want to keep the local file/dir. */ |
|
364 /* ### Initialise to values which prevent the code below from 365 * ### trying to restore anything to disk. 366 * ### 'status' should be status_unknown but that doesn't exist. */ 367 status = svn_wc__db_status_normal; 368 kind = svn_node_unknown; 369 recorded_size = SVN_INVALID_FILESIZE; 370 recorded_time = 0; 371 } --- 52 unchanged lines hidden (view full) --- 424 425 svn_pool_clear(iterpool); 426 427 child_abspath = svn_dirent_join(local_abspath, child_name, iterpool); 428 429 SVN_ERR(revert_restore(run_wq, 430 db, child_abspath, depth, metadata_only, 431 use_commit_times, FALSE /* revert root */, | 387 /* ### Initialise to values which prevent the code below from 388 * ### trying to restore anything to disk. 389 * ### 'status' should be status_unknown but that doesn't exist. */ 390 status = svn_wc__db_status_normal; 391 kind = svn_node_unknown; 392 recorded_size = SVN_INVALID_FILESIZE; 393 recorded_time = 0; 394 } --- 52 unchanged lines hidden (view full) --- 447 448 svn_pool_clear(iterpool); 449 450 child_abspath = svn_dirent_join(local_abspath, child_name, iterpool); 451 452 SVN_ERR(revert_restore(run_wq, 453 db, child_abspath, depth, metadata_only, 454 use_commit_times, FALSE /* revert root */, |
455 added_keep_local, |
|
432 apr_hash_this_val(hi), 433 cancel_func, cancel_baton, 434 notify_func, notify_baton, 435 iterpool)); 436 } 437 438 /* Run the queue per directory */ 439 if (*run_wq) --- 91 unchanged lines hidden (view full) --- 531 if (removed) 532 on_disk = svn_node_none; 533 } 534 } 535 536 /* If we expect a versioned item to be present then check that any 537 item on disk matches the versioned item, if it doesn't match then 538 fix it or delete it. */ | 456 apr_hash_this_val(hi), 457 cancel_func, cancel_baton, 458 notify_func, notify_baton, 459 iterpool)); 460 } 461 462 /* Run the queue per directory */ 463 if (*run_wq) --- 91 unchanged lines hidden (view full) --- 555 if (removed) 556 on_disk = svn_node_none; 557 } 558 } 559 560 /* If we expect a versioned item to be present then check that any 561 item on disk matches the versioned item, if it doesn't match then 562 fix it or delete it. */ |
539 if (on_disk != svn_node_none 540 && status != svn_wc__db_status_server_excluded 541 && status != svn_wc__db_status_deleted 542 && status != svn_wc__db_status_excluded 543 && status != svn_wc__db_status_not_present) | 563 if (on_disk != svn_node_none) |
544 { 545 if (on_disk == svn_node_dir && kind != svn_node_dir) 546 { 547 SVN_ERR(svn_io_remove_dir2(local_abspath, FALSE, 548 cancel_func, cancel_baton, scratch_pool)); 549 on_disk = svn_node_none; 550 } 551 else if (on_disk == svn_node_file && kind != svn_node_file) 552 { 553#ifdef HAVE_SYMLINK 554 /* Preserve symlinks pointing at directories. Changes on the 555 * directory node have been reverted. The symlink should remain. */ 556 if (!(special && kind == svn_node_dir)) 557#endif 558 { 559 SVN_ERR(svn_io_remove_file2(local_abspath, FALSE, scratch_pool)); 560 on_disk = svn_node_none; 561 } 562 } | 564 { 565 if (on_disk == svn_node_dir && kind != svn_node_dir) 566 { 567 SVN_ERR(svn_io_remove_dir2(local_abspath, FALSE, 568 cancel_func, cancel_baton, scratch_pool)); 569 on_disk = svn_node_none; 570 } 571 else if (on_disk == svn_node_file && kind != svn_node_file) 572 { 573#ifdef HAVE_SYMLINK 574 /* Preserve symlinks pointing at directories. Changes on the 575 * directory node have been reverted. The symlink should remain. */ 576 if (!(special && kind == svn_node_dir)) 577#endif 578 { 579 SVN_ERR(svn_io_remove_file2(local_abspath, FALSE, scratch_pool)); 580 on_disk = svn_node_none; 581 } 582 } |
563 else if (on_disk == svn_node_file) | 583 else if (on_disk == svn_node_file 584 && status != svn_wc__db_status_server_excluded 585 && status != svn_wc__db_status_deleted 586 && status != svn_wc__db_status_excluded 587 && status != svn_wc__db_status_not_present) |
564 { 565 svn_boolean_t modified; 566 apr_hash_t *props; 567#ifdef HAVE_SYMLINK 568 svn_string_t *special_prop; 569#endif 570 571 SVN_ERR(svn_wc__db_read_pristine_props(&props, db, local_abspath, --- 135 unchanged lines hidden (view full) --- 707/* Revert tree LOCAL_ABSPATH to depth DEPTH and notify for all reverts. */ 708static svn_error_t * 709revert(svn_wc__db_t *db, 710 const char *local_abspath, 711 svn_depth_t depth, 712 svn_boolean_t use_commit_times, 713 svn_boolean_t clear_changelists, 714 svn_boolean_t metadata_only, | 588 { 589 svn_boolean_t modified; 590 apr_hash_t *props; 591#ifdef HAVE_SYMLINK 592 svn_string_t *special_prop; 593#endif 594 595 SVN_ERR(svn_wc__db_read_pristine_props(&props, db, local_abspath, --- 135 unchanged lines hidden (view full) --- 731/* Revert tree LOCAL_ABSPATH to depth DEPTH and notify for all reverts. */ 732static svn_error_t * 733revert(svn_wc__db_t *db, 734 const char *local_abspath, 735 svn_depth_t depth, 736 svn_boolean_t use_commit_times, 737 svn_boolean_t clear_changelists, 738 svn_boolean_t metadata_only, |
739 svn_boolean_t added_keep_local, |
|
715 svn_cancel_func_t cancel_func, 716 void *cancel_baton, 717 svn_wc_notify_func2_t notify_func, 718 void *notify_baton, 719 apr_pool_t *scratch_pool) 720{ 721 svn_error_t *err; 722 const struct svn_wc__db_info_t *info = NULL; --- 34 unchanged lines hidden (view full) --- 757 info = NULL; 758 } 759 } 760 761 if (!err) 762 err = svn_error_trace( 763 revert_restore(&run_queue, db, local_abspath, depth, metadata_only, 764 use_commit_times, TRUE /* revert root */, | 740 svn_cancel_func_t cancel_func, 741 void *cancel_baton, 742 svn_wc_notify_func2_t notify_func, 743 void *notify_baton, 744 apr_pool_t *scratch_pool) 745{ 746 svn_error_t *err; 747 const struct svn_wc__db_info_t *info = NULL; --- 34 unchanged lines hidden (view full) --- 782 info = NULL; 783 } 784 } 785 786 if (!err) 787 err = svn_error_trace( 788 revert_restore(&run_queue, db, local_abspath, depth, metadata_only, 789 use_commit_times, TRUE /* revert root */, |
790 added_keep_local, |
|
765 info, cancel_func, cancel_baton, 766 notify_func, notify_baton, 767 scratch_pool)); 768 769 if (run_queue) 770 err = svn_error_compose_create(err, 771 svn_wc__wq_run(db, local_abspath, 772 cancel_func, cancel_baton, --- 13 unchanged lines hidden (view full) --- 786static svn_error_t * 787revert_changelist(svn_wc__db_t *db, 788 const char *local_abspath, 789 svn_depth_t depth, 790 svn_boolean_t use_commit_times, 791 apr_hash_t *changelist_hash, 792 svn_boolean_t clear_changelists, 793 svn_boolean_t metadata_only, | 791 info, cancel_func, cancel_baton, 792 notify_func, notify_baton, 793 scratch_pool)); 794 795 if (run_queue) 796 err = svn_error_compose_create(err, 797 svn_wc__wq_run(db, local_abspath, 798 cancel_func, cancel_baton, --- 13 unchanged lines hidden (view full) --- 812static svn_error_t * 813revert_changelist(svn_wc__db_t *db, 814 const char *local_abspath, 815 svn_depth_t depth, 816 svn_boolean_t use_commit_times, 817 apr_hash_t *changelist_hash, 818 svn_boolean_t clear_changelists, 819 svn_boolean_t metadata_only, |
820 svn_boolean_t added_keep_local, |
|
794 svn_cancel_func_t cancel_func, 795 void *cancel_baton, 796 svn_wc_notify_func2_t notify_func, 797 void *notify_baton, 798 apr_pool_t *scratch_pool) 799{ 800 apr_pool_t *iterpool; 801 const apr_array_header_t *children; 802 int i; 803 804 if (cancel_func) 805 SVN_ERR(cancel_func(cancel_baton)); 806 807 /* Revert this node (depth=empty) if it matches one of the changelists. */ 808 if (svn_wc__internal_changelist_match(db, local_abspath, changelist_hash, 809 scratch_pool)) 810 SVN_ERR(revert(db, local_abspath, 811 svn_depth_empty, use_commit_times, clear_changelists, | 821 svn_cancel_func_t cancel_func, 822 void *cancel_baton, 823 svn_wc_notify_func2_t notify_func, 824 void *notify_baton, 825 apr_pool_t *scratch_pool) 826{ 827 apr_pool_t *iterpool; 828 const apr_array_header_t *children; 829 int i; 830 831 if (cancel_func) 832 SVN_ERR(cancel_func(cancel_baton)); 833 834 /* Revert this node (depth=empty) if it matches one of the changelists. */ 835 if (svn_wc__internal_changelist_match(db, local_abspath, changelist_hash, 836 scratch_pool)) 837 SVN_ERR(revert(db, local_abspath, 838 svn_depth_empty, use_commit_times, clear_changelists, |
812 metadata_only, | 839 metadata_only, added_keep_local, |
813 cancel_func, cancel_baton, 814 notify_func, notify_baton, 815 scratch_pool)); 816 817 if (depth == svn_depth_empty) 818 return SVN_NO_ERROR; 819 820 iterpool = svn_pool_create(scratch_pool); --- 19 unchanged lines hidden (view full) --- 840 child_abspath = svn_dirent_join(local_abspath, 841 APR_ARRAY_IDX(children, i, 842 const char *), 843 iterpool); 844 845 SVN_ERR(revert_changelist(db, child_abspath, depth, 846 use_commit_times, changelist_hash, 847 clear_changelists, metadata_only, | 840 cancel_func, cancel_baton, 841 notify_func, notify_baton, 842 scratch_pool)); 843 844 if (depth == svn_depth_empty) 845 return SVN_NO_ERROR; 846 847 iterpool = svn_pool_create(scratch_pool); --- 19 unchanged lines hidden (view full) --- 867 child_abspath = svn_dirent_join(local_abspath, 868 APR_ARRAY_IDX(children, i, 869 const char *), 870 iterpool); 871 872 SVN_ERR(revert_changelist(db, child_abspath, depth, 873 use_commit_times, changelist_hash, 874 clear_changelists, metadata_only, |
875 added_keep_local, |
|
848 cancel_func, cancel_baton, 849 notify_func, notify_baton, 850 iterpool)); 851 } 852 853 svn_pool_destroy(iterpool); 854 855 return SVN_NO_ERROR; --- 10 unchanged lines hidden (view full) --- 866 ### partially recursive revert should handle actual-only nodes. */ 867static svn_error_t * 868revert_partial(svn_wc__db_t *db, 869 const char *local_abspath, 870 svn_depth_t depth, 871 svn_boolean_t use_commit_times, 872 svn_boolean_t clear_changelists, 873 svn_boolean_t metadata_only, | 876 cancel_func, cancel_baton, 877 notify_func, notify_baton, 878 iterpool)); 879 } 880 881 svn_pool_destroy(iterpool); 882 883 return SVN_NO_ERROR; --- 10 unchanged lines hidden (view full) --- 894 ### partially recursive revert should handle actual-only nodes. */ 895static svn_error_t * 896revert_partial(svn_wc__db_t *db, 897 const char *local_abspath, 898 svn_depth_t depth, 899 svn_boolean_t use_commit_times, 900 svn_boolean_t clear_changelists, 901 svn_boolean_t metadata_only, |
902 svn_boolean_t added_keep_local, |
|
874 svn_cancel_func_t cancel_func, 875 void *cancel_baton, 876 svn_wc_notify_func2_t notify_func, 877 void *notify_baton, 878 apr_pool_t *scratch_pool) 879{ 880 apr_pool_t *iterpool; 881 const apr_array_header_t *children; --- 5 unchanged lines hidden (view full) --- 887 SVN_ERR(cancel_func(cancel_baton)); 888 889 iterpool = svn_pool_create(scratch_pool); 890 891 /* Revert the root node itself (depth=empty), then move on to the 892 children. */ 893 SVN_ERR(revert(db, local_abspath, svn_depth_empty, 894 use_commit_times, clear_changelists, metadata_only, | 903 svn_cancel_func_t cancel_func, 904 void *cancel_baton, 905 svn_wc_notify_func2_t notify_func, 906 void *notify_baton, 907 apr_pool_t *scratch_pool) 908{ 909 apr_pool_t *iterpool; 910 const apr_array_header_t *children; --- 5 unchanged lines hidden (view full) --- 916 SVN_ERR(cancel_func(cancel_baton)); 917 918 iterpool = svn_pool_create(scratch_pool); 919 920 /* Revert the root node itself (depth=empty), then move on to the 921 children. */ 922 SVN_ERR(revert(db, local_abspath, svn_depth_empty, 923 use_commit_times, clear_changelists, metadata_only, |
924 added_keep_local, |
|
895 cancel_func, cancel_baton, 896 notify_func, notify_baton, iterpool)); 897 898 SVN_ERR(svn_wc__db_read_children_of_working_node(&children, db, 899 local_abspath, 900 scratch_pool, 901 iterpool)); 902 for (i = 0; i < children->nelts; ++i) --- 18 unchanged lines hidden (view full) --- 921 iterpool)); 922 if (kind != svn_node_file) 923 continue; 924 } 925 926 /* Revert just this node (depth=empty). */ 927 SVN_ERR(revert(db, child_abspath, 928 svn_depth_empty, use_commit_times, clear_changelists, | 925 cancel_func, cancel_baton, 926 notify_func, notify_baton, iterpool)); 927 928 SVN_ERR(svn_wc__db_read_children_of_working_node(&children, db, 929 local_abspath, 930 scratch_pool, 931 iterpool)); 932 for (i = 0; i < children->nelts; ++i) --- 18 unchanged lines hidden (view full) --- 951 iterpool)); 952 if (kind != svn_node_file) 953 continue; 954 } 955 956 /* Revert just this node (depth=empty). */ 957 SVN_ERR(revert(db, child_abspath, 958 svn_depth_empty, use_commit_times, clear_changelists, |
929 metadata_only, | 959 metadata_only, added_keep_local, |
930 cancel_func, cancel_baton, 931 notify_func, notify_baton, 932 iterpool)); 933 } 934 935 svn_pool_destroy(iterpool); 936 937 return SVN_NO_ERROR; 938} 939 940 941svn_error_t * | 960 cancel_func, cancel_baton, 961 notify_func, notify_baton, 962 iterpool)); 963 } 964 965 svn_pool_destroy(iterpool); 966 967 return SVN_NO_ERROR; 968} 969 970 971svn_error_t * |
942svn_wc_revert5(svn_wc_context_t *wc_ctx, | 972svn_wc_revert6(svn_wc_context_t *wc_ctx, |
943 const char *local_abspath, 944 svn_depth_t depth, 945 svn_boolean_t use_commit_times, 946 const apr_array_header_t *changelist_filter, 947 svn_boolean_t clear_changelists, 948 svn_boolean_t metadata_only, | 973 const char *local_abspath, 974 svn_depth_t depth, 975 svn_boolean_t use_commit_times, 976 const apr_array_header_t *changelist_filter, 977 svn_boolean_t clear_changelists, 978 svn_boolean_t metadata_only, |
979 svn_boolean_t added_keep_local, |
|
949 svn_cancel_func_t cancel_func, 950 void *cancel_baton, 951 svn_wc_notify_func2_t notify_func, 952 void *notify_baton, 953 apr_pool_t *scratch_pool) 954{ 955 if (changelist_filter && changelist_filter->nelts) 956 { 957 apr_hash_t *changelist_hash; 958 959 SVN_ERR(svn_hash_from_cstring_keys(&changelist_hash, changelist_filter, 960 scratch_pool)); 961 return svn_error_trace(revert_changelist(wc_ctx->db, local_abspath, 962 depth, use_commit_times, 963 changelist_hash, 964 clear_changelists, 965 metadata_only, | 980 svn_cancel_func_t cancel_func, 981 void *cancel_baton, 982 svn_wc_notify_func2_t notify_func, 983 void *notify_baton, 984 apr_pool_t *scratch_pool) 985{ 986 if (changelist_filter && changelist_filter->nelts) 987 { 988 apr_hash_t *changelist_hash; 989 990 SVN_ERR(svn_hash_from_cstring_keys(&changelist_hash, changelist_filter, 991 scratch_pool)); 992 return svn_error_trace(revert_changelist(wc_ctx->db, local_abspath, 993 depth, use_commit_times, 994 changelist_hash, 995 clear_changelists, 996 metadata_only, |
997 added_keep_local, |
|
966 cancel_func, cancel_baton, 967 notify_func, notify_baton, 968 scratch_pool)); 969 } 970 971 if (depth == svn_depth_empty || depth == svn_depth_infinity) 972 return svn_error_trace(revert(wc_ctx->db, local_abspath, 973 depth, use_commit_times, clear_changelists, 974 metadata_only, | 998 cancel_func, cancel_baton, 999 notify_func, notify_baton, 1000 scratch_pool)); 1001 } 1002 1003 if (depth == svn_depth_empty || depth == svn_depth_infinity) 1004 return svn_error_trace(revert(wc_ctx->db, local_abspath, 1005 depth, use_commit_times, clear_changelists, 1006 metadata_only, |
1007 added_keep_local, |
|
975 cancel_func, cancel_baton, 976 notify_func, notify_baton, 977 scratch_pool)); 978 979 /* The user may expect svn_depth_files/svn_depth_immediates to work 980 on copied dirs with one level of children. It doesn't, the user 981 will get an error and will need to invoke an infinite revert. If 982 we identified those cases where svn_depth_infinity would not 983 revert too much we could invoke the recursive call above. */ 984 985 if (depth == svn_depth_files || depth == svn_depth_immediates) 986 return svn_error_trace(revert_partial(wc_ctx->db, local_abspath, 987 depth, use_commit_times, 988 clear_changelists, metadata_only, | 1008 cancel_func, cancel_baton, 1009 notify_func, notify_baton, 1010 scratch_pool)); 1011 1012 /* The user may expect svn_depth_files/svn_depth_immediates to work 1013 on copied dirs with one level of children. It doesn't, the user 1014 will get an error and will need to invoke an infinite revert. If 1015 we identified those cases where svn_depth_infinity would not 1016 revert too much we could invoke the recursive call above. */ 1017 1018 if (depth == svn_depth_files || depth == svn_depth_immediates) 1019 return svn_error_trace(revert_partial(wc_ctx->db, local_abspath, 1020 depth, use_commit_times, 1021 clear_changelists, metadata_only, |
1022 added_keep_local, |
|
989 cancel_func, cancel_baton, 990 notify_func, notify_baton, 991 scratch_pool)); 992 993 /* Bogus depth. Tell the caller. */ 994 return svn_error_create(SVN_ERR_WC_INVALID_OPERATION_DEPTH, NULL, NULL); 995} | 1023 cancel_func, cancel_baton, 1024 notify_func, notify_baton, 1025 scratch_pool)); 1026 1027 /* Bogus depth. Tell the caller. */ 1028 return svn_error_create(SVN_ERR_WC_INVALID_OPERATION_DEPTH, NULL, NULL); 1029} |