Hacker News .hnnew | past | comments | ask | show | jobs | submit | NotACracker's commentslogin

To make it overcomplicated for git just to fake a point doesn't do it for me.

I am yet to see a real value to use JJ. Those kind of built-up posts I am seeing about JJ on HN tend to push me in the opposite direction.

1) do your test in your current branch, it's related to what you are doing. 2) commit, co master, co -b newtestbranch, PR it, merge in your branch after. You're going to squash rebase at the end anyway...


> To make it overcomplicated for git just to fake a point doesn't do it for me

I have experienced this exact scenario hundreds of times using git over the past two decades. I’m in the middle of some work, I realize I need to task switch to do some other work, then the work that was mid-flight should depend upon that interim thread of changes.

In git it is doable but it is a process, and one that is easily derailed (oh god a chain of failed automatic rebases) that requires keeping state in my head. In jj it is so trivial it doesn’t even register that I did something interesting or special, except when I remember how awful it would have been doing that in git.

> You're going to squash rebase at the end anyway

No? I’m not?


It took me a number of years of working with git to realize it really really wants you to squash things. Especially if you're sharing branches.

git lets you create as complicated a commit tree as you want, and lets you do merges so you can have a separate commit where multiple changes come together, but realistically it really only works if you use it for a rebase workflow in your branches, squashing all changes into a single commit each time. Merge is an outlier when you need a more powerful tool to join branches but want to keep both of the originals still intact. But that shouldn't be your everyday workflow or you're guaranteed to end up with an unreadable, untraceable, and unmanageable commit graph.


Someone should let Linus know that git prefers this workflow. Someone should also let the maintainers of git itself know as well. Both happily employ a merge-based workflow.

What’s actually the case is that your workflow seems best with squash merging. There are a lot of project and teams where this is not the case.


I’m using worktrees for this. Makes more sense IMHO.


Yes, there are a million first-party and third-party bandaids you can use on top of git to try and approximate a sensible workflow. I was a heavy user of `git-revise`.

All of these workarounds just… don't exist in jj, nor do they need to.


It’s not a bandaid, it’s working on two features which should be done on two separate clones. Worktrees avoid having to fully clone the repository, which is cool, but I’d use multiple clones if this did not exist.


(But to be clear Jj has worktrees if you do like that workflow)


Whoops, TIL jj has worktrees!


I don’t think the article is overcomplicating the Git commands to falsely represent how complicated Git is. I can easily believe that in some contexts, a Git user really would need to do all the steps the author describes.

> 1) do your test in your current branch, it's related to what you are doing.

The article describes a scenario where you “feel reasonably assured that green CI will mean you’re on the right track, and you’ve been removing parts of the old parser as you introduce the new”. But this one parser feature you discovered was not under test. “The original parser is half-taken to bits,” so perhaps you already deleted the implementation of that feature, not knowing it was depended on. If the implementation were missing, of course you couldn’t test it on your current branch.

Okay, let’s say you didn’t delete the implementation yet – but the implementation calls some of the methods you already modified. If you write a test on your current branch, it would only show that your already-modified parser passes the test. You couldn’t be confident that the expectations in the test you wrote actually match the behavior of the old parser. If the old parser acted differently from your tests (even if it was due to a bug), you need to know about that so you can update callers of the old parser to not rely on that behavior any more.

To be confident that your new test accurately describes behavior you need to support, you need to run the new test against the “develop” branch.

> 2) … You're going to squash rebase at the end anyway...

Why would you assume that? Some teams prefer to express changes as a series of independent commits when possible, and they merge PRs while keeping those individual commits. My current team is one example. On such teams, keeping a Git feature branch’s history organized is a real need.

If you wonder why a team wouldn’t just squash rebase, I think the goals of keeping commits separate on the main branch are to make debugging tools such as `git log`, `git blame`, and `git bisect` more useful.


> are to make debugging tools such as `git log`, `git blame`, and `git bisect` more useful.

*actually work.

No point using `git bisect` if you switch to a commit that literally doesn't even compile.


If you have a commit that doesn't compile, it should have been squashed into another commit before merging the PR. Every commit should be in a valid state. I'm not talking about a full squash merge, just `git rebase -i` to make sure the history makes sense. The final branch history doesn't have to be the same as your development one.


I admire your courage to say something positive about java.

On another note, I believe Zig does the same thing.


Yeah, they designed a whole language, but they surely couldn't remove that damned dot.

Every single time, I am telling you, every single time I must write an anonymous struct using that dot, I am becoming totally confused!

Me too buddy, me too!

Edit: I should put an /s here, am I right?


Like what?



For clarity: I'm a pandoc diehard (especially because it's written by a philosopher!) but it intentionally doesn't approach this level of functionality, AFAIK.


I totally agree with you.

Real people in the real world (not imaginary people in a fictional blog story) don't overthink every word someone is saying.

Asking for "advices" or asking for "permissions" or just - plain asking - is all the same. People don't see the difference, no one is imagining a scenario based on how the question has been asked, people are probably not even going to remember...


I've just made a test: multiple accounts using the same account/email and there is no conflict.

I even have a matching icon of the issuer for each entry; the issuer is registered for each entry.

I am using the MS Authenticator for years and I've never had any problem of that sort, and of course, I am always using the same email as my account/username.

Anyway, I'm just putting the result of my test. It's not like this going to change your mind about the authenticator or Microsoft itself here...


Which platform? Supposedly the issue ("feature") is specific to the iOS version?


Android


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: