Live data from Hacker News

Pijul: a distributed version control system, written in Rust (2019)

nest.pijul.com

101–110 of 125 posts

Re: Pijul: a distributed version control system, written in Rust (2019)

#101

Earlier quoted context omitted.

And that's fine! I just wish I didn't have to use it (before it is actually considered ready, at least).

You don't have to use the Nest at all, Pijul can work on your own server via SSH, the protocol just runs commands through SSH.

Sorry, guess I worded my old post poorly. I have next-to-no interest in Pijul itself. Git is working fine for me, and the snapshot model is much clearer and easier for me than patches anyway.

My problems only become relevant when trying to contribute to projects that already use Pijul/Nest (Carnix).

Re: Pijul: a distributed version control system, written in Rust (2019)

#102

Earlier quoted context omitted.

> but the point of Pijul is that you don't need to "do things right" to avoid the potential problems of your version control system. The criticism directed by the Pijul guys at git cherry-pick is actually not a problem at all. At best, the argument made by Pijul's backers is that Pijul implements this feature differently and in a way that arguably may be creating a problem where in Git there is none.

> The criticism directed by the Pijul guys at git cherry-pick is actually not a problem at all. Maybe, maybe not, but it comes with actual arguments, whereas that comment doesn't.

There is a clear argument that you chose to ignore: cherry-picks are patently not a problem in Git, and the only problematic aspect is how some git users might create their own personal problems by developing misinformed workflows while ignoring any information on best practices. If you try to reinvent the wheel on your own, ignore any advice or info, and end up with a badly shaped polygonal thing then you simply can't pin the blame on your chisel.

Re: Pijul: a distributed version control system, written in Rust (2019)

#103

Earlier quoted context omitted.

The combination of > (2) thinking about the future and sustainability of the project, including its funding. and the rewrite apparently not happening in the open casts some doubt as to whether the project will remain fully open source.

> the rewrite apparently not happening in the open I'm the author of the rewrite. It will almost certainly be open source when it's done, but it is not open right now, because: - the license of the current version has not been properly observed by other projects in the past. - this project keeps getting bashed for "corrupting repositories" and "changing formats constantly", even though it is announced as experimental…

Thank you, that's good to hear! Your arguments are valid.

Re: Pijul: a distributed version control system, written in Rust (2019)

#104
post #89

Earlier quoted context omitted.

I tried to read that HOTT paper. I should preface this by saying that my homotopy type theory knowledge is basically 0 and my topology/homotopy/algebra knowledge is limited and rusty. Here are some notes I took as I read it: 1. I guess I’m starting off not understanding the relevance of this paper to distributed version control. If you have a type R for states of your repository and patches are then paths of type a =…

Regarding 2, why do you need the ability to distinguish these cases? After all, those two repositories are in the same state, which is that p is applied. The only reason you'd want to distinguish is if you want to preserve history. What about the distributed scenario makes it special?

Because a DVCS has to be distributed. If Alice writes patch p, Bob reverts it, and Charlie unreverts it, you might (without contexts) have three people with different states of the repo:

  Alice: {p}
  Bob: {p, !p} (or do you write this as {}?)
  Charlie: {p, !p, p} = {p, !p}? So I guess this has to be {p}
Suppose these people are pushing and merge if in patches to the master. Then it has no way to distinguish these scenarios:

  A:
  1. Alice pushes; master applies p
  2. Bob pulls, reverts p, pushes. Master reverts p
  3. Charlie pulls, reapplies, pushes. Master does ??

  B
  1. Alice pushes; master applies p
  2. Charlie pulls
  3. Bob pulls and reverts; master reverts p
  4. Charlie pushes
In both cases, the state of Charlie’s repo is the same: {p}, but in case A, p should be applied and in case B, it should not. Therefore there needs to be some additional context (or no applying a patch and it’s inverse).

In other words, this problem is basically having a distributed set with addition, deletion, and readdition of elements, which you can’t have in a nice way. A distributed set that you can only add to, on the other hand, is a lot more easy.

Re: Pijul: a distributed version control system, written in Rust (2019)

#105

Earlier quoted context omitted.

You don't have to use the Nest at all, Pijul can work on your own server via SSH, the protocol just runs commands through SSH.

Sorry, guess I worded my old post poorly. I have next-to-no interest in Pijul itself. Git is working fine for me, and the snapshot model is much clearer and easier for me than patches anyway. My problems only become relevant when trying to contribute to projects that already use Pijul/Nest (Carnix).

> My problems only become relevant when trying to contribute to projects that already use Pijul/Nest (Carnix).

Well, but then you can't blame others for using their preferred tools rather than your preferred tools. Also, Git doesn't work for Carnix, because its main author (me) is completely overwhelmed with too many projects and wouldn't want to add the additional project of managing Git branches.

Re: Pijul: a distributed version control system, written in Rust (2019)

#106
post #89

Earlier quoted context omitted.

Regarding 2, why do you need the ability to distinguish these cases? After all, those two repositories are in the same state, which is that p is applied. The only reason you'd want to distinguish is if you want to preserve history. What about the distributed scenario makes it special?

Because a DVCS has to be distributed. If Alice writes patch p, Bob reverts it, and Charlie unreverts it, you might (without contexts) have three people with different states of the repo: Alice: {p} Bob: {p, !p} (or do you write this as {}?) Charlie: {p, !p, p} = {p, !p}? So I guess this has to be {p} Suppose these people are pushing and merge if in patches to the master. Then it has no way to distinguish these scenar…

CRDTs have to tackle this sort of problem as well.

Re: Pijul: a distributed version control system, written in Rust (2019)

#107
post #38

Earlier quoted context omitted.

Darcs has a some pathological algorithms. IME, darcs has never lost a repo of mine and Pijul has. So I'm not clamoring to use pijul instead - I don't use darcs in a way that runs into the pathological cases anyway.

In full fairness, was it Darcs version 0.x? Pijul has never made any claim to be stable yet (but we're getting there).

Nope! But I need reliable version control, so I will continue using darcs until I hear Pijul is more reliable.

Re: Pijul: a distributed version control system, written in Rust (2019)

#108
post #42

Earlier quoted context omitted.

Compared to git, it relies on patches rather than a branch approach. I think it's more intuitive. Less opportunities to do silly things and some things that are punishing in git are not with patch-based version control.

> Compared to git, it relies on patches rather than a branch approach. Is this even relevant at all? I mean, in the user's POV the role of a VCS is to CRUD changesets and branches. As long as the user can commit their changesets and audit the DAG of past commits, who cares how the system is implemented under the hood?

> audit the DAG of past commits

That's a branch-based way to look at it.

Re: Pijul: a distributed version control system, written in Rust (2019)

#109
post #67

Earlier quoted context omitted.

Well, for a project explicitly announced as experimental (there's even a blinking paragraph on nest.pijul.com), two years is quite a while. The repository of Pijul itself got corrupted several times, but the last time was certainly more than a year ago.

While that's a reasonable position in some ways I certainly don't get the impression that I should assume Pijul is not up to the most fundamental guarantee of an SCM: not losing my code. A page telling me why I should use Pijul probably should explain that I shouldn't use it for anything that matters in the most trivial of ways and yours doesn't. https://pijul.org/manual/why_pijul.html

> the most fundamental guarantee of an SCM: not losing my code.

Yeah. It's not terribly useful, even as a research VCS if i end up with corrupted repositories.

Re: Pijul: a distributed version control system, written in Rust (2019)

#110
post #74

> This website uses cookies to ensure you get the best experience on our website. Thats the quickest way to get me to close the tab.

European laws require something like that to be said. The Nest uses cookies to authenticate you, it doesn't even give you one if you don't log in.

Not for functional ones. Only for tracking / advertising cookies.
Post reply on HN