Hacker News new | past | comments | ask | show | jobs | submit login

Right but that doesn't address the collaboration issue: who gets to decide where the branch points to?



In jj, pulled commits are immutable by default. Commits that you author are mutable until you push them.

If I'm on a project with change AAA -> BBB, suppose my friend authors CCC and I author DDD.

So my history looks like:

    AAA  ---->  BBB  ---->  DDD
    (immutable) (immutable) (mutable)
And my friend's has:

    AAA  ---->  BBB  ---->  CCC
    (immutable) (immutable) (mutable)
But then my friend pushes their change first. So when I pull, I'll have:

    AAA -> BBB -> CCC (immutable)
            \
             '-> DDD (mutable)
Just like git, I then rebase my commit by saying `jj next` (mnemonic: "move this commit to its next descendant") to get

    AAA -> BBB -> CCC (immutable) -> DDD (mutable)


The person who last pushed.

jj force pushes by default, but unlike git, the force push defaults to the "safe" variant (similar to git's --force-with-lease). So you won't accidently overwrite someone else's changes with your force push.




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

Search: