Hacker News new | ask | show | jobs
by simonw 86 days ago
I hadn't heard of Pijul. My first search took me to https://github.com/8l/pijul which hasn't been updated in 11 years, but it turns out that's misleading and the official repo at https://nest.pijul.com/pijul/pijul had a commit last month.

... and of course it is, because Pijul uses Pijul for development, not Git and GitHub!

2 comments

> I hadn't heard of Pijul

I'm surprised! Pijul has been discussed here on HN many, many times. My impression is that many people here were hoping that Pijul might eventually become a serious Git contender but these days people seem to be more excited about Jujutsu, likely because migration is much easier.

Looks like it makes the homepage only once or twice a year (using points>50 as a proxy for that), had more buzz around five years ago: https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
I too am here all the time and have never heard of it. But it looks interesting.
The canonical website is https://pijul.org. The homepage has a link to the pijul source repository.
They should mirror on GitHub for marketing purposes
How would they do that if they don't use git for version control? Does GitHub allow other forms of version control other than git?
SQLite does it despite using Fossil - their mirror is at https://github.com/sqlite/sqlite

Git is so established now that it's sensible for alternative VCS to have a mode where they can imitate the Git protocol - or seven without that you can still checkout the latest version of your repo and git push that on a periodic basis.

Git is not a protocol, it is a data format. That only makes sense when your VCS system is similar enough to git to easily allow converting between the two representations.
I mean things like git-svn, hg-git, git-p4, git-remote-fossil, git-tfs, jj.
Similarly, CUE uses Gerrit and has two way sync. If you are building a VCS today, git interop is a must.
What if the whole point of your VCS is that it its core data structure is nothing like git's at all?
pijul clone https://nest.pijul.org/pijul/pijul

pijul log --hash-only > all_changes.txt

pijul unrecord --all

git init

``` for HASH in $(cat all_changes.txt); do pijul apply "$HASH" pijul reset # sync working copy to channel state git add -A git commit -m "pijul change: $HASH" done ```

git remote add origin git@github.com:you/pijul-mirror.git git push -u origin main