Bug: private branches closed by notation in a public record
(1) By Richard Hipp (drh) on 2019-10-03 19:13:42 [source]
Apparently, if you have a private branch and then you "fossil merge --integrate" that private branch into a public branch, the manifest for the public check-in will contain a "close" tag that references the last check-in of the private branch. In other words, a reference to a private check-in is added to a public check-in.
Furthermore, after you do this a few times, the
fossil test-integrity
command will report that the private
check-ins are "phantoms".
An example of the extra "close" tag can be seen at https://www.sqlite.org/src/artifact/cb3e2be674316?ln=1844. There is no 91875000a76cad5b7615 check-in within the public SQLite tree. That check-in is on a private branch.
This problem is mostly harmless, and it has been around for a long time, so I do not feel the need to fix it for the 2.10 release.
(2) By anonymous on 2019-10-03 21:46:49 in reply to 1 [link] [source]
the manifest for the public check-in will contain a "close" tag that references the last check-in of the private branch.
I don't see that as a real problem. In fact, it gives me an idea for another issue.
Because a private branch/commit is not listed as a merge parent of a public commit, information is lost.
However, a tag like "merged_from" could retain the information while allowing Fossil to not complain about a missing artifact.
If a manifest or control artifact has a "merged_from" tag, then if the referred artifact is present, the time line can show the merge-parent relationship. If not, Fossil would not complain about the artifact being missing.
This way:
The repo containing the private branch can still show the merge-parent relationship.
If the private branch is even published, the relationship would become visible to others.
The timeline could optionally show that a merge from a private branch occurred despite the artifact not being present.
(3) By Florian Balmer (florian.balmer) on 2019-10-04 12:00:26 in reply to 1 [link] [source]
A possible fix is contained in this branch, and an alternative solution (with a separate control artifact to hold the +close
tag) is discussed in this post.