On Tuesday 26 February 2013 07:47 PM, Philip Martin wrote:
vijay <vi...@collab.net> writes:

    /* write out the revision */
    /* Revision is written out in the following cases:
-     1. No --drop-empty-revs has been supplied.
-     2. --drop-empty-revs has been supplied,
-     but revision has not all nodes dropped
-     3. Revision had no nodes to begin with.
+     1. If the revision has nodes or it is revision 0.
+     2. --drop-empty-revs has been supplied,
+     but revision has not all nodes dropped.
+     3. No --drop-all-empty-revs has been supplied.
+     4. If no --drop-empty-revs or --drop-all-empty-revs have been supplied,
+     write out the revision which has no nodes to begin with.
    */
-  if (rb->has_nodes
-      || (! rb->pb->drop_empty_revs)
-      || (! rb->had_dropped_nodes))
+  if (rb->has_nodes || (rb->rev_orig == 0))
+    write_out_rev = TRUE;
+  else if (rb->pb->drop_empty_revs)
+    write_out_rev = rb->had_dropped_nodes ? FALSE : TRUE;
+  else if (rb->pb->drop_all_empty_revs)
+    write_out_rev = FALSE;
+  else
+    write_out_rev = TRUE;
+
+  if (write_out_rev)
      {

You have added the rev_orig == 0 check so that means that
--drop-all-empty-revs doesn't drop r0.  Is there a reason for that
behaviour?


If the dump was taken from a mirror repo, r0 might have some information like 'svn:sync-from-url', 'svn:sync-from-uuid', etc. I thought that '--drop-all-empty-revs' should not just drop r0 considering as an empty revision.

Please correct me if I am wrong.

Thanks & Regards,
Vijayaguru

Reply via email to