When:
  *  A file is added in a private branch
  *  This private branch is pushed to a remote server
  *  This branch is locally merged to a public branch
  *  The merge is pushed to the remote server

A fossil scrub --private executed directly on the remote server will delete the content of the file.

How to reproduce:
<code>$ fossil new a.fossil

$ fossil clone b.fossil

$ mkdir test

$ cd test

$ echo "abcd" >test.txt

$ fossil add test.txt

$ fossil commit -m"test" --private

$ cd ..

$ fossil sync -R a.fossil --private

$ cd test

$ fossil checkout trunk

$ fossil merge private

$ fossil commit -m"test"

$ cd..

$ fossil sync -R a.fossil --private

$ fossil scrub b.fossil --private

$ fossil ui b.fossil</code>

Browse the files and observe that the content of test.txt is missing.

I think that the problem is that when fossil receives a non-private manifest that points to a file that was previously private, it should mark that file's content as public and it doesn't.