summaryrefslogtreecommitdiff
path: root/subversion/libsvn_wc/diff_local.c
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/libsvn_wc/diff_local.c')
-rw-r--r--subversion/libsvn_wc/diff_local.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/subversion/libsvn_wc/diff_local.c b/subversion/libsvn_wc/diff_local.c
index e1cb3294b4ba7..61ec06767e3a0 100644
--- a/subversion/libsvn_wc/diff_local.c
+++ b/subversion/libsvn_wc/diff_local.c
@@ -281,7 +281,8 @@ diff_status_callback(void *baton,
{
local_only = TRUE; /* Only report additions */
}
- else if (db_status == svn_wc__db_status_normal)
+ else if (db_status == svn_wc__db_status_normal
+ || db_status == svn_wc__db_status_incomplete)
{
/* Simple diff */
base_kind = db_kind;
@@ -297,7 +298,8 @@ diff_status_callback(void *baton,
eb->db, local_abspath,
scratch_pool, scratch_pool));
- if (base_status != svn_wc__db_status_normal)
+ if (base_status != svn_wc__db_status_normal
+ && base_status != svn_wc__db_status_incomplete)
return SVN_NO_ERROR;
}
else
@@ -312,7 +314,8 @@ diff_status_callback(void *baton,
eb->db, local_abspath,
scratch_pool, scratch_pool));
- if (base_status != svn_wc__db_status_normal)
+ if (base_status != svn_wc__db_status_normal
+ && base_status != svn_wc__db_status_incomplete)
local_only = TRUE;
else if (base_kind != db_kind || !eb->ignore_ancestry)
{
@@ -388,9 +391,20 @@ diff_status_callback(void *baton,
if (local_only && (db_status != svn_wc__db_status_deleted))
{
+ /* Moved from. Relative from diff anchor*/
+ const char *moved_from_relpath = NULL;
+
+ if (status->moved_from_abspath)
+ {
+ moved_from_relpath = svn_dirent_skip_ancestor(
+ eb->anchor_abspath,
+ status->moved_from_abspath);
+ }
+
if (db_kind == svn_node_file)
SVN_ERR(svn_wc__diff_local_only_file(db, child_abspath,
child_relpath,
+ moved_from_relpath,
eb->processor,
eb->cur ? eb->cur->baton : NULL,
FALSE,
@@ -400,6 +414,7 @@ diff_status_callback(void *baton,
else if (db_kind == svn_node_dir)
SVN_ERR(svn_wc__diff_local_only_dir(db, child_abspath,
child_relpath, depth_below_here,
+ moved_from_relpath,
eb->processor,
eb->cur ? eb->cur->baton : NULL,
FALSE,