652
652
return svn_error_trace(svn_wc_context_destroy(wc_ctx));
656
svn_wc_queue_committed3(svn_wc_committed_queue_t *queue,
657
svn_wc_context_t *wc_ctx,
658
const char *local_abspath,
659
svn_boolean_t recurse,
660
const apr_array_header_t *wcprop_changes,
661
svn_boolean_t remove_lock,
662
svn_boolean_t remove_changelist,
663
const svn_checksum_t *sha1_checksum,
664
apr_pool_t *scratch_pool)
666
return svn_error_trace(
667
svn_wc_queue_committed4(queue, wc_ctx, local_abspath,
668
recurse, TRUE /* is_committed */,
669
wcprop_changes, remove_lock,
670
remove_changelist, sha1_checksum,
657
675
svn_wc_queue_committed2(svn_wc_committed_queue_t *queue,
793
wcprop_changes_hash = svn_wc__prop_array_to_hash(wcprop_changes, pool);
794
SVN_ERR(svn_wc__process_committed_internal(db, local_abspath, recurse, TRUE,
795
new_revnum, new_date, rev_author,
797
!remove_lock, !remove_changelist,
798
sha1_checksum, NULL, pool));
800
/* Run the log file(s) we just created. */
801
return svn_error_trace(svn_wc__wq_run(db, local_abspath, NULL, NULL, pool));
809
queue = svn_wc_committed_queue_create(pool);
810
SVN_ERR(svn_wc_queue_committed3(queue, wc_ctx, local_abspath, recurse,
811
wcprop_changes, remove_lock,
813
sha1_checksum /* or NULL if not modified
817
SVN_ERR(svn_wc_process_committed_queue2(queue, wc_ctx,
818
new_revnum, rev_date, rev_author,
819
NULL, NULL /* cancel */,
822
return svn_error_trace(svn_wc_context_destroy(wc_ctx));
1025
1059
compat_call_notify_func, &nb, pool);
1062
/*** From revert.c ***/
1064
svn_wc_revert4(svn_wc_context_t *wc_ctx,
1065
const char *local_abspath,
1067
svn_boolean_t use_commit_times,
1068
const apr_array_header_t *changelist_filter,
1069
svn_cancel_func_t cancel_func,
1071
svn_wc_notify_func2_t notify_func,
1073
apr_pool_t *scratch_pool)
1075
return svn_error_trace(svn_wc_revert5(wc_ctx, local_abspath,
1079
FALSE /* clear_changelists */,
1080
FALSE /* metadata_only */,
1081
cancel_func, cancel_baton,
1082
notify_func, notify_baton,
1029
1087
svn_wc_revert3(const char *path,
1030
1088
svn_wc_adm_access_t *parent_access,
1966
2024
apr_pool_t *result_pool,
1967
2025
apr_pool_t *scratch_pool)
2027
const svn_diff_tree_processor_t *diff_processor;
2029
/* --git implies --show-copies-as-adds */
2030
if (use_git_diff_format)
2031
show_copies_as_adds = TRUE;
2033
/* --show-copies-as-adds implies --notice-ancestry */
2034
if (show_copies_as_adds)
2035
ignore_ancestry = FALSE;
2037
SVN_ERR(svn_wc__wrap_diff_callbacks(&diff_processor,
2038
callbacks, callback_baton, TRUE,
2039
result_pool, scratch_pool));
2042
diff_processor = svn_diff__tree_processor_reverse_create(
2043
diff_processor, NULL, result_pool);
2045
if (! show_copies_as_adds)
2046
diff_processor = svn_diff__tree_processor_copy_as_changed_create(
2047
diff_processor, result_pool);
1969
2049
return svn_error_trace(
1970
2050
svn_wc__get_diff_editor(editor, edit_baton,
1972
2052
anchor_abspath, target,
1974
ignore_ancestry, show_copies_as_adds,
1975
2054
use_git_diff_format, use_text_base,
1976
2055
reverse_order, server_performs_filtering,
1977
2056
changelist_filter,
1978
callbacks, callback_baton,
1979
2058
cancel_func, cancel_baton,
1980
2059
result_pool, scratch_pool));
2716
svn_wc__status2_from_3(svn_wc_status2_t **status,
2717
const svn_wc_status3_t *old_status,
2718
svn_wc_context_t *wc_ctx,
2719
const char *local_abspath,
2720
apr_pool_t *result_pool,
2721
apr_pool_t *scratch_pool)
2723
const svn_wc_entry_t *entry = NULL;
2725
if (old_status == NULL)
2728
return SVN_NO_ERROR;
2731
*status = apr_pcalloc(result_pool, sizeof(**status));
2733
if (old_status->versioned)
2736
err= svn_wc__get_entry(&entry, wc_ctx->db, local_abspath, FALSE,
2737
svn_node_unknown, result_pool, scratch_pool);
2739
if (err && err->apr_err == SVN_ERR_NODE_UNEXPECTED_KIND)
2740
svn_error_clear(err);
2745
(*status)->entry = entry;
2746
(*status)->copied = old_status->copied;
2747
(*status)->repos_lock = svn_lock_dup(old_status->repos_lock, result_pool);
2749
if (old_status->repos_relpath)
2750
(*status)->url = svn_path_url_add_component2(old_status->repos_root_url,
2751
old_status->repos_relpath,
2753
(*status)->ood_last_cmt_rev = old_status->ood_changed_rev;
2754
(*status)->ood_last_cmt_date = old_status->ood_changed_date;
2755
(*status)->ood_kind = old_status->ood_kind;
2756
(*status)->ood_last_cmt_author = old_status->ood_changed_author;
2758
if (old_status->conflicted)
2760
const svn_wc_conflict_description2_t *tree_conflict2;
2761
SVN_ERR(svn_wc__get_tree_conflict(&tree_conflict2, wc_ctx, local_abspath,
2762
scratch_pool, scratch_pool));
2763
(*status)->tree_conflict = svn_wc__cd2_to_cd(tree_conflict2, result_pool);
2766
(*status)->switched = old_status->switched;
2768
(*status)->text_status = old_status->node_status;
2769
(*status)->prop_status = old_status->prop_status;
2771
(*status)->repos_text_status = old_status->repos_node_status;
2772
(*status)->repos_prop_status = old_status->repos_prop_status;
2774
/* Some values might be inherited from properties */
2775
if (old_status->node_status == svn_wc_status_modified
2776
|| old_status->node_status == svn_wc_status_conflicted)
2777
(*status)->text_status = old_status->text_status;
2779
/* (Currently a no-op, but just make sure it is ok) */
2780
if (old_status->repos_node_status == svn_wc_status_modified
2781
|| old_status->repos_node_status == svn_wc_status_conflicted)
2782
(*status)->repos_text_status = old_status->repos_text_status;
2784
if (old_status->node_status == svn_wc_status_added)
2785
(*status)->prop_status = svn_wc_status_none; /* No separate info */
2787
/* Find pristine_text_status value */
2788
switch (old_status->text_status)
2790
case svn_wc_status_none:
2791
case svn_wc_status_normal:
2792
case svn_wc_status_modified:
2793
(*status)->pristine_text_status = old_status->text_status;
2795
case svn_wc_status_conflicted:
2797
/* ### Fetch compare data, or fall back to the documented
2798
not retrieved behavior? */
2799
(*status)->pristine_text_status = svn_wc_status_none;
2803
/* Find pristine_prop_status value */
2804
switch (old_status->prop_status)
2806
case svn_wc_status_none:
2807
case svn_wc_status_normal:
2808
case svn_wc_status_modified:
2809
if (old_status->node_status != svn_wc_status_added
2810
&& old_status->node_status != svn_wc_status_deleted
2811
&& old_status->node_status != svn_wc_status_replaced)
2813
(*status)->pristine_prop_status = old_status->prop_status;
2816
(*status)->pristine_prop_status = svn_wc_status_none;
2818
case svn_wc_status_conflicted:
2820
/* ### Fetch compare data, or fall back to the documented
2821
not retrieved behavior? */
2822
(*status)->pristine_prop_status = svn_wc_status_none;
2826
if (old_status->versioned
2827
&& old_status->conflicted
2828
&& old_status->node_status != svn_wc_status_obstructed
2829
&& (old_status->kind == svn_node_file
2830
|| old_status->node_status != svn_wc_status_missing))
2832
svn_boolean_t text_conflict_p, prop_conflict_p;
2834
/* The entry says there was a conflict, but the user might have
2835
marked it as resolved by deleting the artifact files, so check
2837
SVN_ERR(svn_wc__internal_conflicted_p(&text_conflict_p,
2840
wc_ctx->db, local_abspath,
2843
if (text_conflict_p)
2844
(*status)->text_status = svn_wc_status_conflicted;
2846
if (prop_conflict_p)
2847
(*status)->prop_status = svn_wc_status_conflicted;
2850
return SVN_NO_ERROR;
2636
2855
/*** From status.c ***/
2638
2857
struct status4_wrapper_baton