Calling branches "branches" is misleading

Coming from Git and Subversion this feature was difficult for me to understand. In those systems the analogy makes sense because you can draw the repository history as a bunch of timelines that are related to a main timeline (except when you create an orphan branch and then the analogy doesn’t make sense anymore).

After I read that in Pijul branches are just sets of patches I got quite confused and I didn’t understand what was its purpose. I had to read about spontaneous (non-)branches in Darcs before everything clicked.

So I wonder why not rename the feature? I think set is a good name because that’s what they are but if we want an analogy why not pool or workspace? This would make the fork and prune (I read that’s how delete-branch will be renamed) subcommands a little longer (because we would need something like new-pool or new-set or whatever) but I think the mental model is more important.

And of course this is matter of opinion. Maybe someone will get the concept faster than me but in any case I think it is better to be precise (and that’s the reason that patches are called patches and not commits)

Edit: I think state could work too

1 Like

This is a very good point, I was explaining this to a friend this week, and advised him against using branches in the beginning, and he said “I think I understand, patches commute, but I like my stuff clean”.

I had to draw a set and a timeline on my whiteboard to make the distinction clear.

Changesets are great, especially since I don’t like the term “patch” very much.

I like changeset too but I think anything is better than branch :sweat_smile:

That’s interesting, why is that? To me, ‘change’ sounds much more ambiguous than ‘patch’.

Because (1) patches sounds like a quick fix and (2) like they apply to a specific context.

Both are false in Pijul. Other properties of patches are that they describe changes to a file, and are generated by a diff, which are both true in Pijul.

Maybe it would make sense to start talking about “changes” in places of “patches” and “changeset” in place of “branch,” then?


Yes please! IMHO it doesn’t matter that much if they are called patches or changes but once a concept is chosen I think it must be used everywhere to avoid confusion

In my yet-to-be-released qt interface for pijul, I use change for the elementary changes within patches, and contribution for (current) patches. I’ve kept branch, but maybe variant would work?

I don’t know about contribution. The more I think about it, the more I am convinced we should not throw away the word patch, as it is something familiar for vcs user and darcs users more specifically.

Maybe just renaming branches as patchsets would be enough to clear people’s mind?


The more I think about it the more I think patchset or just set is a better name for what currently are called branch. This comes from my discussions on Twitter about why I’m exited about Pijul. At some point I used the term bag, a “bag of patches”, and it was confusing.

set coveys the idea that there’s only one copy of each patch in the set and I’m more and more convinced that analogies are not good


Hi, I’m late to this conversation, but having used Mercurial Queues (mq) and quilt in the past (and having loved the flexibility and power those came with), I’m quite excited for pijul. As you might guess, I’m very much in favor of keeping the term “patch.” I agree that branch is not a great name. I would prefer the terms from mq and/or quilt: stack or series.

Hi! You’re not actually late, because this is still undecided. I hope to release the super-fast version of Pijul in 2019, but that’s not guaranteed. Stack or series have the disadvantage that they sound sequential, which Pijul tries to avoid as much as possible (Pijul patches that could be produced in parallel always commute).

1 Like

I have been reading about how pijul patches can commute, and I wondered if stack or series would not fit well because of that. If that’s the case than patchset is probably the best name.

I see the suggestion for changeset, but since other version control systems use that name to refer to a single revision/commit/patch, that would probably be confusing.


I’m new to this whole project, and branch also confused me.
Having changsets in SVN and how it build a file by sequentially applying changesets (which is what makes it slow), that’s not a word that should be used either, but it makes me wonder if Pijul is doing the same thing as SVN in that regard.
But reading the manual, I got confused between fork and clone, which are both used by other VCS. I’m still not sure what the difference is between the three commands.