Hello, I haven’t used Pijul yet but it sounds interesting based on the documentation I’ve read.
My understanding is that both diffs and dependencies can be language-dependent. In addition to the minimal dependencies needed to reconstruct files and directories, there could be additional semantic dependencies. Perhaps a function call might depend on a function definition?
The details will probably be worked out some time in the future, but I’m curious about how it might work.
Suppose we write patch A, which calls a function defined in previous patch B, so we add a dependency from A to B. Then someone edits B to create B2, which is compatible. (The code compiles and runs with either definition.)
Conceptually, A may depend on either B or B2, but only the dependency on B is reified (since B2 didn’t exist). B no longer appears in the latest version since it’s been entirely replaced by B2. How would that look to users? What sort of conflicts would show up?
Also, more fundamentally, it seems like Pijul has dependencies on “buried” patches in other ways, such as using the first commit of a file to represent a file. What does that look like?
What is a dependency anyway? Is it just a unique ID or does it have to refer to a patch?