Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)HA
Posts
30
Comments
139
Joined
3 mo. ago

  • 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.

    One takes them from the last commit log and uses the first few letters. Steve Klabnik shows how they are used in practice. It makes no sense to repeat it here.

  • Well, the thing that this seeks to improve on is the crazy complexity of advanced git commands, which gave rise to several humorous mentions on XKCD and even satire man pages like this:

    https://git-man-page-generator.lokaltog.net/

    ..... and if you think that you know most of git well, then, quick, what happens when you merge two branches of a repo which has several changed submodules in each branch? Is this deterministically resolved, and if so, how?

  • Yeah you can undo undo and also resurrect undone states.

    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 have to admit that in spite of having used git for about 20 years, I never used reflog. And even with magit I did stuff like rebase rarely. I found it costing too much time to read the man pages again every time and meditate what would happen with "reset xyz".

  • jj by default refuses to change any commits on published branches such as a master branch that has been pushed. The details are configurable.

    BTW that's why I linked Linus Torvalds mail on when and why to rewrite history - it is good advice.

  • 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.

  • 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.

  • 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 muate and is therefore not allowed to be merged by other people.

  • I would be curious to know in which specific cases people which have experience with using both think plain git is still better.

    In my experience, when using jujutsu it can be necessary to use git commands to access repos via ssh, vpn and such. Also, jujutsu ignores git submodules, so one has to do submodule operations with git (but I think that culturally, using submodules most often is not such a good idea).

  • Magnesium frame and such. I had an older and heavier one and was always joking it would come handy as a blunt weapon if there was a sudden monster attack. It once fell from my desk to the floor and didn't even had a scratch.

    Plus if you are on budget it is really best value for the money.

    Check ThinkWiki and Thinkpad wiki sites for details. You do not need high specs to run Linux.

  • Just a general recommendation for that kind of question:

    1. Note down the requirements you have
    2. Go to the software list in the Arch wiki, http://wiki.archlinux.org/
    3. Check out the list for that application area and see and try which program matches your requirements.

    (Guix package manager can be helpful if your distro does not have this native package; it can without any problem run on top of your distro.)

    Having used the wiki, you can even claim you are an Arch user! ;-)

  • Linux @lemmy.ml

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

    Programming @programming.dev

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

    Free and Open Source Software @beehaw.org

    RustDesk, a remote support tool filling the role of TeamViewer

    Linux @lemmy.ml

    RustDesk, probably one of the best TeamViewer Alternatives

    Programming @programming.dev

    Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity

    Programming @programming.dev

    Git experts should try Jujutsu

    Programming @programming.dev

    Literate Programming

    Programming @programming.dev

    Writing Code Was Never The Bottleneck

    Open Source @lemmy.ml

    Libxml2's “no security embargoes” policy

    Programming @programming.dev

    Revisiting Knuth's 'Premature Optimization' Paper

    Programming @programming.dev

    Entangled: Literate Programming in Markdown

    Programming @programming.dev

    Literature review on the benefits of static types, by Dan Luu

    Programming @programming.dev

    Project Gemini FAQ

    Open Source @lemmy.ml

    Project Gemini FAQ

    Rust Programming @lemmy.ml

    A New Rust Packaging Model in Guix

    Programming @programming.dev

    A New Rust Packaging Model for Guix

    Programming @programming.dev

    Introduction - redo: a recursive build system

    Programming @programming.dev

    The Leo Text Editor's Home Page

    Linux @lemmy.ml

    What is your most useful Linux app which others might not know about (please don't just give the name but a link and why it is good for you) ?

    Open Source @lemmy.ml

    Trusting your own judgement on AI is a huge risk