Index: src/manifest.c
==================================================================
--- src/manifest.c
+++ src/manifest.c
@@ -1335,17 +1335,27 @@
     }
   }
   if( pParent->zBaseline && pChild->zBaseline ){
     /* Both parent and child are delta manifests.  Look for files that
     ** are marked as deleted in the parent but which reappear in the child
-    ** and show such files as being added in the child. */
+    ** and show such files as being added in the child.
+    ** Also look for different uuids in the parent, to show that
+    ** the file contents were back those of the baseline */
     for(i=0, pParentFile=pParent->aFile; i<pParent->nFile; i++, pParentFile++){
-      if( pParentFile->zUuid ) continue;
       pChildFile = manifest_file_seek(pChild, pParentFile->zName);
       if( pChildFile ){
-        add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
-                      isPublic, manifest_file_mperm(pChildFile));
+        int mperm = manifest_file_mperm(pChildFile);
+        if( !pParentFile->zUuid ){
+          /* File added to the child */
+          add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
+              isPublic, mperm);
+        }else if( fossil_strcmp(pChildFile->zUuid, pParentFile->zUuid) !=0
+            || manifest_file_mperm(pParentFile)!=mperm ){
+          /* File changed in the child back to the baseline uuid or perms */
+          add_one_mlink(cid, pParentFile->zUuid, pChildFile->zUuid,
+              pChildFile->zName, 0, isPublic, mperm);
+        }
       }
     }
   }else if( pChild->zBaseline==0 ){
     /* pChild is a baseline.  Look for files that are present in pParent
     ** but are missing from pChild and mark them as having been deleted. */