Index: subversion/include/svn_client.h =================================================================== --- subversion/include/svn_client.h (revision 1819572) +++ subversion/include/svn_client.h (working copy) @@ -46,6 +46,7 @@ #include "svn_ra.h" #include "svn_diff.h" #include "svn_auth.h" +#include "private/svn_wc_private.h" #ifdef __cplusplus extern "C" { @@ -870,6 +871,10 @@ typedef struct svn_client_diff_summarize_t /** File or dir */ svn_node_kind_t node_kind; + + /** For beeing able to display revision numbers */ + svn_diff_source_t *left_source; + svn_diff_source_t *right_source; } svn_client_diff_summarize_t; /** Index: subversion/libsvn_client/diff_summarize.c =================================================================== --- subversion/libsvn_client/diff_summarize.c (revision 1819572) +++ subversion/libsvn_client/diff_summarize.c (working copy) @@ -55,6 +55,8 @@ struct summarize_baton_t { static svn_error_t * send_summary(struct summarize_baton_t *b, const char *path, + const svn_diff_source_t *left_source, + const svn_diff_source_t *right_source, svn_client_diff_summarize_kind_t summarize_kind, svn_boolean_t prop_changed, svn_node_kind_t node_kind, @@ -73,6 +75,8 @@ send_summary(struct summarize_baton_t *b, || summarize_kind == svn_client_diff_summarize_kind_normal) sum->prop_changed = prop_changed; sum->node_kind = node_kind; + sum->left_source = left_source; + sum->right_source = right_source; SVN_ERR(b->summarize_func(sum, b->summarize_func_baton, scratch_pool)); return SVN_NO_ERROR; @@ -153,7 +157,7 @@ diff_dir_changed(const char *relpath, { struct summarize_baton_t *b = processor->baton; - SVN_ERR(send_summary(b, relpath, svn_client_diff_summarize_kind_normal, + SVN_ERR(send_summary(b, relpath, left_source, right_source, svn_client_diff_summarize_kind_normal, TRUE, svn_node_dir, scratch_pool)); return SVN_NO_ERROR; @@ -173,7 +177,7 @@ diff_dir_added(const char *relpath, struct summarize_baton_t *b = processor->baton; /* ### Send from dir_opened without prop info? */ - SVN_ERR(send_summary(b, relpath, svn_client_diff_summarize_kind_added, + SVN_ERR(send_summary(b, relpath, copyfrom_source, right_source, svn_client_diff_summarize_kind_added, props_changed_hash(right_props, scratch_pool), svn_node_dir, scratch_pool)); @@ -191,7 +195,7 @@ diff_dir_deleted(const char *relpath, { struct summarize_baton_t *b = processor->baton; - SVN_ERR(send_summary(b, relpath, svn_client_diff_summarize_kind_deleted, + SVN_ERR(send_summary(b, relpath, left_source, NULL, svn_client_diff_summarize_kind_deleted, FALSE, svn_node_dir, scratch_pool)); return SVN_NO_ERROR; @@ -212,7 +216,7 @@ diff_file_added(const char *relpath, { struct summarize_baton_t *b = processor->baton; - SVN_ERR(send_summary(b, relpath, svn_client_diff_summarize_kind_added, + SVN_ERR(send_summary(b, relpath, copyfrom_source, right_source, svn_client_diff_summarize_kind_added, props_changed_hash(right_props, scratch_pool), svn_node_file, scratch_pool)); @@ -236,7 +240,7 @@ diff_file_changed(const char *relpath, { struct summarize_baton_t *b = processor->baton; - SVN_ERR(send_summary(b, relpath, + SVN_ERR(send_summary(b, relpath, left_source, right_source, file_modified ? svn_client_diff_summarize_kind_modified : svn_client_diff_summarize_kind_normal, props_changed(prop_changes, scratch_pool), @@ -257,7 +261,7 @@ diff_file_deleted(const char *relpath, { struct summarize_baton_t *b = processor->baton; - SVN_ERR(send_summary(b, relpath, svn_client_diff_summarize_kind_deleted, + SVN_ERR(send_summary(b, relpath, left_source, NULL, svn_client_diff_summarize_kind_deleted, FALSE, svn_node_file, scratch_pool)); return SVN_NO_ERROR; Index: subversion/svn/diff-cmd.c =================================================================== --- subversion/svn/diff-cmd.c (revision 1819572) +++ subversion/svn/diff-cmd.c (working copy) @@ -170,14 +170,23 @@ summarize_regular(const svn_client_diff_summarize_ * thus the blank spaces where information that is not relevant to * a diff summary would go. */ - prop_change = summary->prop_changed ? 'M' : ' '; + prop_change = summary->prop_changed ? 'P' : ' '; if (b->ignore_properties) prop_change = ' '; + /* original SVN_ERR(svn_cmdline_printf(pool, "%c%c %s\n", kind_to_char(summary->summarize_kind), prop_change, path)); + */ + SVN_ERR(svn_cmdline_printf(pool, "%c%c %-60s | %10d | %10d |\n", + kind_to_char(summary->summarize_kind), + prop_change, summary->path, + summary->left_source != NULL ? summary->left_source->revision : -1, + summary->right_source != NULL ? summary->right_source->revision : -1 + )); + return svn_cmdline_fflush(stdout); }