View Ticket
Not logged in
Ticket UUID: 5f194e2c8f475ce9d5e8bde058c1e97d683f3ce5
Title: fossil scrub --private sometimes remove private files that have been merged into public branches
Status: Fixed Type: Code_Defect
Severity: Important Priority:
Subsystem: Resolution: Fixed
Last Modified: 2011-03-04 13:11:15
Version Found In: ae89a7ce79
Description & Comments:
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: $ fossil new a.fossil

$ fossil clone file://a.fossil 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 file://b.fossil --private

$ cd test

$ fossil checkout trunk

$ fossil merge private

$ fossil commit -m"test"

$ cd..

$ fossil sync -R a.fossil file://b.fossil --private

$ fossil scrub b.fossil --private

$ fossil ui b.fossil

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.