Live data from Hacker News

Pijul is a free and open source (GPL2) distributed version control system

pijul.org

81–90 of 212 posts

Re: Pijul is a free and open source (GPL2) distributed version control system

#81
So Pijul is patch-based. And not in the boring implementation-sense of storing changes as a series of patches. In the interesting sense that patches can be ordered in more arbitrary ways. On the other hand Git is snapshot-based. And Git was built for the Linux Kernel (specifically from the perspective of the lead maintainer). But my impression from the outside is that the Linux Kernel development is very “patch-based”. First of all in the sense of sending patches via email. But also in the sense that these patches can be applied to multiple trees (not just the Linus tree) and different subsystems have to cherry-pick commits (i.e. picking a commit and applying it as a patch, creating a new commit somewhere else). And it seems that people are concerned about tracking what patches are where, what commit (which can correspond to many commits according to cherry-picks) fixes whatever commit. The people behind Patchwork (a tool for maintainers which tracks patch series) is concerned about being able to track patches; the usual `git patch-id`, naming heuristics, etc. does not seem good enough.

And as patches go through different contributors and maintainers they accumulate trailers in the form of signed-off-by and things like that. Even non-trailer (not key-value line) changelogs like: `[: fixed typo/ fixed off by one]`. And if the change is in the code then the patch content changes (not just the commit message).

The Git project is also pretty patch-based in its development. Even for those who only cares about the maintainer tree: these patches apply to this other in-flight patch series; this diff here can be applied on top of your pending patch series; this patch series is from our ongoing work at Gitlab (company); I’m resending this patch series that X did three months ago but seemed to have abandoned; etc.

Re: Pijul is a free and open source (GPL2) distributed version control system

#82
post #74

> However, channels are different from Git branches, and do not serve the same purpose. In Pijul, independent changes commute, which means that in many cases where branches are used in Git, there is no need to create a channel in Pijul. I've never understood this. AFAIK, the only use case I've ever seen for git branches is "I have some code, but don't want it going live yet". Maybe it's a WIP demo, maybe you want som…

A common case for git branches is long-life versions. For example, one git branch can be for version 1.0 and one git branch can be for version 2.0. This can be good for major upgrades, as well as for site-specific installations, as well as for regulated industries that need to audit specific versions.

Re: Pijul is a free and open source (GPL2) distributed version control system

#84

Missing FAQ: Is the "j" in Pijul hard or soft?

Don't know what hard or soft supposed to mean in a hypothetically ambiguous context, but the `j` here is obviously a Voiceless velar fricative (`x` in IPA). Think loch (Scott.), Χάρων (Gr.), joven (Sp.), хлопець (Ukr.)

https://en.wikipedia.org/wiki/Voiceless_velar_fricative

Re: Pijul is a free and open source (GPL2) distributed version control system

#85

Earlier quoted context omitted.

Pijul eliminates the rift between rebases and merges. That in itself is an enormous gain over the confused git workflow or lack thereof.

And what is it? couldn't find on the "doc"... is it all rebases or all merges?

More like merges but actually neither… it can reorder patches, even conflicting ones, it’s a completely foreign concept in git.

Re: Pijul is a free and open source (GPL2) distributed version control system

#86
post #74

> However, channels are different from Git branches, and do not serve the same purpose. In Pijul, independent changes commute, which means that in many cases where branches are used in Git, there is no need to create a channel in Pijul. I've never understood this. AFAIK, the only use case I've ever seen for git branches is "I have some code, but don't want it going live yet". Maybe it's a WIP demo, maybe you want som…

There are (unfortunately) a lot of git repositories with multiple long-lived branches, often to track what's released in different environments. Unfortunate because it leads to a _ton_ of merge conflicts and uncertainty about what code is live in what env.

One of the most popular of these flows was popularized under the brand "Gitflow". Atlassian has a detailed, and critical, writeup of that here: https://www.atlassian.com/git/tutorials/comparing-workflows/...

Re: Pijul is a free and open source (GPL2) distributed version control system

#87
post #85

Earlier quoted context omitted.

And what is it? couldn't find on the "doc"... is it all rebases or all merges?

More like merges but actually neither… it can reorder patches, even conflicting ones, it’s a completely foreign concept in git.

sounds like rebase with force push remote. (well, every push is a force push in git. so just rebase+push. ...except on github if you have "protected branches")

Re: Pijul is a free and open source (GPL2) distributed version control system

#88

Earlier quoted context omitted.

Not intentional; I used vim 10 years ago, but have been an emacser with vim-bindings for the past 7 I guess :)

That is the best set up imo. Vim keybindings and composability are great, but Emacs being built on Lisp is a super power.

In a similar vein, it's been incredible to watch the Cambrian explosion of plugins since NeoVim introduced deep Lua integration and configurability.

Re: Pijul is a free and open source (GPL2) distributed version control system

#89
post #16

Earlier quoted context omitted.

I have the same question every time Pijul comes up on HN, and I have yet to get an answer: Can someone give me a real world example (person a makes X change, person b makes y change etc. etc.) that would work better in Pijul than Git? I am a complete believer on a sound underlying model producing better results for users at a high level, but I'm not clear on how it maps through for Pijul. I think that's what they're…

Pijul eliminates the rift between rebases and merges. That in itself is an enormous gain over the confused git workflow or lack thereof.

Most won't understand the gravity of this without a concrete example.

Re: Pijul is a free and open source (GPL2) distributed version control system

#90
post #69
post #30

Earlier quoted context omitted.

You kinda missed the point. You have two repos with different history: master -> patch a -> patch b master -> patch b -> patch a But the contents of the files are equal after applying both patches (in either order). Git will consider these to be two different, Pijul thinks they're the same. This is a simplified example. It only gets interesting when there are a lot of patches, some of which are commutative and some a…

What benefit is there to the VCS knowing that these histories are equal? That's valuable in verification or efficient binary patching, but I don't see how it matters in version control. When would I want to compare two repositories that were patched in different orders?

I'm guessing that it makes it easier to pick and choose between a bunch of patches. This is something I sometimes want to do in Git, but doing so requires a bit of planning. Have all the independent features branch from the same point, then, to 'assemble' them, do an octopus merge.

If the VCS knows about dependencies between patches intuitively, it could free me from having to explain it, which in the case of Git, requires following procedures that I'm unlikely to convince any of my coworkers to follow ("ohay, first, decide on the earliest point in the history from which this patch could make sense, rebase onto that....")

Post reply on HN