Introduction - Steve's Tutorial on Jujutsu, an alternative front-end to git


Jujutsu is essentially an alternative front-end or "porcelain" to git, both magnificiently simplified and powerful.

I tried it after using Emacs Magit for about six or seven years, and jujutsu is really easier to use than git and useful if one wants a tidy public history of changes (with "tidy" and "public" as Linus Torvalds recommends). Plus it is fully compatible to git as backend - other contributors will not even note you are using it.

This entry was edited (2 weeks ago)
in reply to paequ2

Another useful property is that while jujutsu does have worktrees, like git, in many cases where one would use git worktrees (for example when writing accompanying documentation ) it is just easier to use another line of changes (what is a branch in git).

Alas, that jujutsu does not store local change sets automatically on a remote git repo (this happens only when you update and push a git branch), means that still-mutable local changes are not automatically transferred to another computer you work on. And unpublished changes are naturally mutable in jujutsu. But you can safely copy a jj repo via rsync, as changes in jj metadata are thread-safe and atomic. The other way is of course to push a work-in-progress ("WIP") git branch which can mutate and is therefore not allowed to be merged by other people.

This entry was edited (2 weeks ago)
in reply to HaraldvonBlauzahn

That’s not really how one would use worktrees in git. Worktrees are useful in the case when e.g. you are working on version 0.15 of your software that has many breaking changes to version 0.14 (perhaps even on a build system level) and you need to release a 0.14.1 patch. Worktrees separate directories which means you don’t need to stash or do a wip commit, nor clear you 0.15 build artefacts. Just cd to a different worktree, checkout the 0.14 branch, create and checkout the 0.14.1 branch, clear build artifacts in a different directory from your main development one, and start working.

When done, just cd back and keep working again without switching branches, clearing artifacts, or doing full rebuilds of the in-development 0.15 version.

Plus, git does not store change sets or branches or anything on any remote unless you push them either, so if you’re having that problem just stop pushing things you don’t want to push. You can totally rsync a git repo, just ensure it’s at rest. Otherwise do what you should be doing anyway: set the repo on another machine as a remote of the other repo, so you can git pull my_private_machine feature/my_private_branch without needing to push to a central repo.

I’m sure jujutsu has many advantages, but it also reads to me like you’re misunderstanding the git model. Which can be a fair critique of git to be fair, but then we would need to talk about what about the git model people have trouble with, why, and how to address those issues, and so far I haven’t seen any kind of research in that direction from jujutsu (not that I’ve been looking particularly hard)

This entry was edited (2 weeks ago)
in reply to ugo

One difference between using worktrees and branches in git is that in git you usually have uncommited stuff that's not finished, and worktrees are a way to avoid committing this. And you want to avoid committing early because it is hard to clean-up later. This hesistsnce to commit is not necessary at all in jujutsu - any change to the source files is already captured and will be restored once you go back to that changeset. There are other cases where you use worktrees in git e.g. to isolate a build and an hour-long integration test running it in parallel to your ongoing work, and in thar cases, you'd use workspaces in jujutsu like you'd in git.

but then we would need to talk about what about the git model people have trouble with, why


Too many commands that do subtly and irreversivly things on the repo, with potentially messed-up interim states, only to do the conceptually much simpler task to edit and manipulate the directed acyclic graph of commits.

In short, jujutsu is a commit graph editor and does the same with perhaps 10% of the complexity of git. The man pages on the git reset, branch and merge commands are already larger than the whole - and detailed!- documentation of jujutsu.

Steve Klabnik explains this much better than I can here in his blog that I posted.

This entry was edited (2 weeks ago)
in reply to HaraldvonBlauzahn

It is simply not my experience that cleaning up commits after committing early is difficult in git. Amending a commit is a single -a flag away from the git commit command. The opposite problem is when you do too much work and want to split it into multiple commit rather than a huge one, in which case git add -p is again a single flag away from git add.

In general, git’s entire model is to allow you to work first, and do administrative tasks (including tidying up your commit history etc) later.

And almost nothing is truly destructive in git, the vast majority of cases can be fixed by judicious use of git reflog.

The only cases I’ve ran into where git repos became corrupted were caused by external tools, mainly GUIs that label buttons with git commands that do something different when clicked (like the button labeled push actually doing git push —all for no good reason, and such things) with users that have no idea how git works that have been trained just by telling them “click this to save your work, click this to get the last version of the code”

in reply to paequ2

Technically true - but it looks like jj does a lot of history re-writing which would require a lot of care to be taken when working on a shared codebase.

The page on remotes has some cautions in it.

We need the --allow-backwards flag to set the trunk branch to the previous commit because it is a dangerous operation: if we had pushed trunk, things would get weird when we try and push now. We've kept it all local, so there's no issues with doing this.
in reply to HaraldvonBlauzahn

Hrm... It looks interesting but it seems too dedicated to crafting "the perfect commit".

Changing our description changed the commit ID! This is why we have both IDs: the change ID has not changed, but the commit ID has. This allows us to evolve our commit over time, but still have a stable way to refer to all versions of it.


I don't want to "evolve a commit" - I want to capture my changes over time. If I decide later that I want to prepare the commit for merging I will.

I hate it because it's different - but even trying to give it a "benefit of the doubt" I really can't see this as better. It's not like it's difficult to create a "tidy" commit with git as is.

And as far as "easier to use goes"... well... Here's how you get a list of anonymous branches

jj log -r 'heads(all())'

And since they eschew branches with names you get to memorize hash strings instead of branch names that describe the thing you were doing?
jj new pzoqtwuv yykpmnuq -m "merge better documentation"
# vs. 
git merge my_branch_Name

I'm unconvinced. Though jj undo looks neat (and also crazy dangerous unless you can undo an undo?).
This entry was edited (2 weeks ago)
in reply to atzanteol

And since they eschew branches with names you get to memorize hash strings instead of branch names that describe the thing you were doing?


No trouble, you can still name branches if you want. And no, you don't have to type the whole changeset hash, the first one to three letters are usually sufficient.

Also, branch names are not a permanent thing, they disappear after you merged them.

If you want, to can put an empty commit with the description of what you want to do at the top of your changes, and then use "jj split" to move changes to different commits before it.
There are several common work flows which are explained in Klabnik's blog post.

in reply to HaraldvonBlauzahn

If the readability of the commit history really does not matter to you - for exsmple, nobody needs to read this code again - it’s possible that jj does not give you enough advantage. Everyone works different.


I mean... It does and I will use git to manage commit histories as necessary. I don't see jj as solving that problem or even making it easier. Doing a single squash-commit or a rebase -i when I merge a branch is relatively trivial.

And from what I can tell it's much easier to do a git pull upstream master than to do jj new skdfsld dskfjas since you'll likely have to lookup those hashes? I mean I wouldn't remember them.

in reply to HaraldvonBlauzahn

One takes them from the last commit log and uses the first few letters


So - it's not the length of the random garbage that is the issue it's the fact that it's random garbage that I have no chance of remembering after 5 seconds and switching between branches. All my branches are instead random hashes that I'll need to lookup or remember.

I've read through the blog. It sounds like they've taken the minor inconvenience of doing a git merge --squash and distributed that pain across every-single-commit you're ever going to make instead. All to get "tidy commits" which were possible before anyway.

I was actually rather interested in the idea of jj being something that made history-rewriting easier (e.g. for removing bad commits with passwords and the like). But the fact that it almost completely throws out the entire concept of working on named branches (yes you can have them - but "One interesting thing about branches in jj that's different than branches in git is that branches do not automatically move." - genius) is just ridiculous. And to claim that it's now simpler just seems like gaslighting.

#Flaming Ember #55 years
Give my mind to you with a love that'll never grow old
You are my smiles the last tears
You are my days, my weeks, my years
You are the flowers beneath my window sill
You are everything beautiful everything that's real
I give my love to you all my body and soul
youtu.be/5M91JHi3gZc?si=rjpNOL…

If you still think that #Apple cares for the #privacy of its paying customers:

Apple Gave #Governments Data on Thousands of Push #Notifications
404media.co/apple-gave-governm…

With companies like that, you're the product although you pay premium money.

#iOS #iPhone #security

Looking for a music player


I'm looking for a music player on Pop!_OS that supports playlists, repeating a single track while still being able to swap tracks in the playlist, and also supports fading between songs and when stopping playback. And ideas on what to try?

So far I've tried VLC, Audacious, and Rhythmbox, but none of those seem to support all of those requirements. (Rhythmbox was close but the repeat one from the toolbar plugin doesn't work.)

Edit: Got it working in Rhythmbox after toggling the repeat options a few more times. Still curious if there are other options out there though.

This entry was edited (2 weeks ago)

Johan Messely
#art, #peinture #Johan-Messely
Fraicheur sous la varangue...

I'm pro-union and pro-international workers associations for better conditions or anticapitalist antifascist activism, this government deliberately trying to gaslight workers at fault for something caused by bosses/ceos/governments internationally, riots are a language of the unheard and downtrodden.

abc.net.au/news/2025-07-14/qld…

#cfmeu #classwar #queensland #qldpol #qldgov #qld #australia #humanrights #eattherich #ausgov #auspol #tasgov #taspol #politas #antiwork #antislavery #fuckwork #slavery

My aunt is currently in the middle of a major
sundown" episode due to a relief caregiver not giving her her meds at the right time.

I am home in Fort Worth and am in contact with the caregiver and a really good neighbor who are with her. There is nothing we can really do until she settles down (law will not allow anyone to force medication on her).

If you have the time, please pray for the caregiver and the neighbor friend as they deal with this.

Thank you in advance.

reshared this

The song is called "Fly From the Inside" by Shinedown. It was released in 2003 and was used in the following video game soundtracks:

MVP Baseball 2003
MX vs ATV Unleashed

It's an amazing song with a strong message. Give it a listen! :mariofire:

#Music #Rock #Shinedown #NowPlaying

JUDGE NAPOLITANO:

"I think Trump's name is on the list. I think Mossad knows it. I think Mossad told their American stenographer, who happens to be the director of the CIA, who takes down and regurgitates everything Mossad told him… And I think that stenographer whispered it into the president's ear," Judge Andrew Napolitano claims.

🔥According to him, the White House is terrified this will come out, because "it will be the beginning of the end," no matter who controls Congress.

The 1986 Ford Taurus / Mercury Sable was another big design change in the American automotive industry.


The 1976 Cadillac Seville was the first of the new design language from General Motors that dominated the company all throughout the 80s.

The design focussed on maximizing interior roominess for the driver and passengers in a smaller platform (compared to what was typical at the time).

Love it or hate it, the design was very influential.


Israeli forces destroy Mawasi’s shelters, cemeteries after expelling thousands from ‘safe zone’ madamasr.com/en/2025/07/13/new…

#Gaza officials say children killed in strike as Israeli military admits 'error' — 6 kids fetching water bbc.com/news/articles/c0rvxjnv…

Israeli settlers kill Palestinians in West Bank attack, health ministry says bbc.com/news/articles/cm2mknzn…

More than 70 arrests at #Palestine Action ban protests — in London bbc.com/news/articles/cq6mjg13…

This entry was edited (3 weeks ago)
in reply to Doodle Bop

Yeah, the food is put in the can, the can is sealed, and then its heated to both cook the food in the can and to kill off any bacteria. As long as the can doesn't lose its air-tight seal, they can last a long time.

A few months ago, I opened a 10-year-old can of corn and another of sweet peas, just to prove it to my GF. They were just fine.

Just be careful with pop-top lids cause they can lose their seal easily. And be careful with stuff like fruit cocktail cause the acid in citrus juice can corrode the aluminum can after a while.

in reply to Paultron-3030

@Paultron-3030 I get the sinking feeling, with all the black and grey activity that goes on in the US, that the FBI was basically in a turf war on behalf of the Jewish mob.
The ethnic mobs were at least local. They were *your* criminal organizations. It entailed a certain power being held by the ethnic groups. Now they’re gone, and there’s a huge underground economy in the US, and it’s not just agriculture.
Makes me wonder if we weren’t better off with the ethnic mobs, but maybe I’m merely associating the good ole days with them.
in reply to Griffith

as to what the FBI was doin i don't know. getting rid of the big international gangs (that the US WW2 government had a strong hand in establishing) was a good thing regardless of motive. it was not the end of the road into fixing the US but obviously that was not their motive
they were never your criminal org, if you weren't in them. the first and most important factor of such a group is that they dig a gulf between themselves and normal people- a sense of unique identity is a bonding factor for members and a weapon to be wielded over 'civilians'. ultimately non members were objects to be abused for money. the route to the most money did not always involve harming these civilians, but they weren't holding back out of the kindness of their hearts
it ultimately boils down to how you view power relationships- any relation between people will have a power aspect, but do you think there is a role of concentrated power from groups of people to utilize that power for greater ends without making it miserable for everyone
its happened a few times before but idk if it can be legislated into consistency and time is short for this planet

The 1976 Cadillac Seville was the first of the new design language from General Motors that dominated the company all throughout the 80s.

The design focussed on maximizing interior roominess for the driver and passengers in a smaller platform (compared to what was typical at the time).

Love it or hate it, the design was very influential.

This entry was edited (2 weeks ago)

EscapeVelocity reshared this.

Truly heartbreaking: A man called into Alex Jones' Infowars on June 16 to say: "I married an illegal and I want to know if there's any proactive step we can take to maybe get on a list of 'leave this one alone' or whatever. We've been in the system. We've got two lawyers, we've spent thousands of dollars..." at which point Alex Jones cuts him off and says basically if the country doesn't remove immigrants than the democrats will win so they need to "hurt some people who aren't bad."

overcast.fm/+AAH1m5QT7uY/1:04:…

Israeli airstrikes and artillery bombardment killed at least 92 people across the #Gaza Strip on Sunday, with at least 42 killed in Gaza City alone, Arab sources say.

#Israel today released the names of several recently neutralized Palestinian militants whom the military said were attempting to reestablish the capabilities of Hamas and Palestinian Islamic Jihad.
#SaveGaza #StopIsrael #SanctionIsrael #BDS
#palestine #Politics #Genocide #PeaceNow #StopTheWar @palestine@a.gup.pe @israel @palestine@lemmy.ml

in reply to EscapeVelocity

I can't remember the exact details, but the Plymouth Fury from these years was an option on top of the Belvedere, and they all came in a specific paint scheme that was NOT red with white trim. (one year it was gold with aluminum trim, and another year it was buckskin white with gold trim) The Fury in "Christine" was shown as a special order (which I don't think Plymouth would actually do) but it definitely made it stand out in the beginning scene where she is the only red car on the line of light colored Furies.

Stephen King wrote Christine as a 1957 Fury because he wanted to use a car that wasn't "popular" like the 1957 Chevy Bel Air. But he did almost zero research and originally wrote Christine as a 1957 Fury 4-door, which did NOT exist.

我这个周末过的

只能说还好我提前遛了

我妈我姐中午和我们吃晚饭就回家睡午觉了

我和我外甥女就出门逛街,看电影

完了

我外甥给我们俩带奶茶,在一起吃晚饭

结束以后,这俩姐弟还想拉我去打羽毛球

不行了

我就应该中午和我妈回家睡午觉

我真的佩服,这种活力无限的人

in reply to EscapeVelocity

These had a fantastic drag coefficient. There used to be a pre-1960 racing league where the rules were you had to use a pre-1960 body but could use whatever chassis/powertrain combo you wanted underneath it. Everyone kind of expected it to be a Corvette show but the Studes dominated because of their aerodynamics.

Studebaker was also, as far as I can tell, the only company of significant size to successfully transition from horse-drawn buggy manufacturer to automobile manufacturer. Studebaker built many of the Conestoga wagons that were used to settle the West.

The Good Guys

The Good Guys are building concentration camps in Rafah
and massacring civilians trying to obtain food.

The Good Guys are circling the planet with hundreds of military bases
and telling us we're not allowed to oppose genocide.

Yesterday I saw a little girl playing
and I thought how nice it is that she has all her limbs
and that she is not lying still
covered in gray dust
while her father screams and cries
and calls out to God
while trying to kiss her back to life.

in reply to Caitlin Johnstone

The world is changed now.
The moon is covered with powdered buildings.
The pigeons are weeping
and the wind sounds like drones.
Sometimes I cough and gray dust comes out.
Sometimes it's a child's shoe.
There's a dead donkey lying in my backyard
that nobody wants to talk about.

The Australians chat about real estate investments
and how you can knock down one house
and replace it with two houses
and then make believe that neither house
smells like corpses.

in reply to Caitlin Johnstone

The news man tells us the corporations
are just dumping the products directly into the Pacific now
while clinging tightly to the edge of the screen
so the black hole doesn't pull him in.

Everything's fine, the news man yells,
and the system is working perfectly.
We are the Good Guys after all.
We are, after all, the Good Guys.
caitlinjohnst.one/p/the-good-g…

:weirdfish:
RT: ryona.agency/objects/b3a015ce-…


bardicperspiration.club has blocked the following instances:

13bells.com with unspecified reason
childpawn.shop with unspecified reason
nekosat.work with unspecified reason


in reply to mos_8502 🇨🇦

It’s small right now but I’d love open hardware, gateware, and software for kids to learn upon. That’s what’s appealing about your project to me. (That, and I’d finally feel like remembering the 6502 instruction set isn’t wasted brain space.)

I’m not sure the revived C64 is fully open though? And the fact the guy is a Truther is an instant turn off. Regardless, enjoy researching the competition.

PSA: You Might Want To Be Careful Buying Pre-Owned Switch 1 Games For Your Switch 2


source: nintendolife.com/news/2025/07/…

It seems that owning an official, secondhand S1 cart can also create problems if a previous owner ripped it and has been running it elsewhere via a flashcard.


#nintendo #switch #switch2 #software #game #gamer #problem #ban #economy #customer #consumer #secondhand #politics #drm #news