As far as I can tell from the source code, the “dependencies” with a [*]
are not actual dependencies, but changes that are saved as additional context. It seems pijul needs those in some cases, but I would expect them to not matter to the user.
Indeed, they don’t matter to the user, but Pijul needs them in order to guarantee certain properties, in particular to distinguish some cases of conflict with non-conflicts.
I noticed this in a more complicated situation, and have reduced to following test case. Given a test file ‘x’, which will hold these 2 states:
INITIAL x
EDITED x
I record the initial ‘x’ file:
Then replace the contents with x2 (
cat x2 > x
) and Record proposes 2 hunks like this:Now in the editor I remove hunk 2, and record only hunk 1.
Then on subsequent record Pijul proposes the following, where it has added the [*] dependency on N2O5, which is the above hunk 1 change.
QUESTION: What exactly does
[*]
indicate, and why is the ‘dd’ change now dependent on both PSXB and N2O5? Is it a bug? The changed line ‘dd’ is not touching the prior hunk 1 change, because line ‘c’ is in between, so how is it dependent? Testing even with many lines in between, it still picks up this dep. Also, it relates to ‘dd’ being an edit (or delete), if I just add a line after ‘d’ instead, then there is no[*]
dep.I suggest
[*]
be explained clearly in the manual or an FAQ, maybe with its own topic so it shows in index/TOC, because it’s difficult to search for[*]
since all regexp chars.(Pijul version = 1.0.0-beta.2)