Most active commenters
  • odie5533(4)
  • layer8(3)
  • sunshowers(3)

←back to thread

Jujutsu for everyone

(jj-for-everyone.github.io)
434 points Bogdanp | 17 comments | | HN request time: 1.528s | source | bottom
1. layer8 ◴[] No.45084800[source]
One showstopper for me is that Jujutsu doesn’t support .gitattributes (https://jj-vcs.github.io/jj/latest/git-compatibility/).
replies(3): >>45085384 #>>45085408 #>>45087806 #
2. verdverm ◴[] No.45085384[source]
or LFS, hooks, submodules, shallow clones
replies(1): >>45087811 #
3. mdaniel ◴[] No.45085408[source]
In every one of these threads I learn some new axis of git that JJ doesn't support, so I really do wonder if JJ should have squatted upon a different DVCS given how much it wants to do things the JJ way leading to folks with git experience being sad
replies(3): >>45085626 #>>45089103 #>>45090266 #
4. nchmy ◴[] No.45085626[source]
nah, git was absolutely the right thing to squat on - its ubiquitous, so making it seamlessly powerful and easy to use makes for easy adoption. If it was built on pijul or whatever, I'd never have given it a try.

to the extent that niche things might not be supported (yet), so be it. It suits the needs of the vast majority of people. Moreover, if you need those things, I BET you can just do it via git and then carry on working in jj, since jj sits on top of git

5. odie5533 ◴[] No.45087806[source]
.gitattributes has only caused me trouble, so I wouldn't really miss it. IMO it's a footgun.
replies(1): >>45092573 #
6. odie5533 ◴[] No.45087811[source]
So it doesn't have most of the worst features git ever invented. Got it.
replies(2): >>45089987 #>>45090153 #
7. sunshowers ◴[] No.45089103[source]
Ehh these are mostly edge case features that are very important to some, but not relevant to most. I've been using Jujutsu full time with dozens of repos and the only one that's come close to mattering is submodules (which are easy to work around with a colocated repo + `git submodule update`).

CRLF autoconversions especially shouldn't have been supported, imho. Git on Windows's default setup still converts LF to CRLF to this day, even though every program on Windows has understood LF for a number of years.

8. Cthulhu_ ◴[] No.45089987{3}[source]
I can understand the criticism to submodules but the rest of your comment feels like unwarranted snark.
replies(1): >>45090038 #
9. odie5533 ◴[] No.45090038{4}[source]
Hooks, submodules, and LFS all have huge followings of haters. I think just a week ago there was a big post on HN about how awful LFS is.
replies(1): >>45094087 #
10. digianarchist ◴[] No.45090266[source]
Adoption probability without git squatting would be virtually zero.
11. lmm ◴[] No.45090332{4}[source]
I'm all for functionality, but git should never have been a smorgasbord of random bolt-on special cases. If you have to break the basic core functionality to make a feature work, it's not a good feature.
12. layer8 ◴[] No.45092573[source]
It's the only way to ensure proper cross-platform EOL handling when you can't rely on users configuring their local Git appropriately.

Of course, it also requires users to use the official Git client, so that .gitattributes are actually observed. But that's more likely to be the case in practice.

replies(1): >>45094870 #
13. odie5533 ◴[] No.45092575{4}[source]
I never said jj was awesome. I've never used it. I'm already adept at git, enough to have opinions on its advanced features, and the knowledge to avoid them, so I'm not sure if I'd gain all that much from jj.
14. SAI_Peregrinus ◴[] No.45094087{5}[source]
LFS is pretty crap, but the problem it tries to solve is real: version control should be able to control all the sources of the application, not just the text-based sources. Even if it can't meaningfully "diff" between them.
15. sunshowers ◴[] No.45094870{3}[source]
The correct way to do cross-platform EOL handling is to use LF for all files on all platforms, and enforce that via hooks or CI. Every program on Windows, including the humble Notepad, understands LF these days.

Git for Windows configures core.autocrlf to true by default. This is a terrible idea, imho. "input" is a bit more justifiable.

replies(1): >>45095441 #
16. layer8 ◴[] No.45095441{4}[source]
If you have to deploy or test with CRLF files, you can’t force LF for all files. This isn’t about editors, but about files to be deployed on customer systems, and/or to be used in tests, where the interfacing software has other requirements. You also have to use .gitattributes to reliably define which files to treat as text files in the first place. And you’d have to define your hooks and CI checks to be consistent with that. Note that Git always converts CRLF to LF upon check-in for defined-to-be-text files, even on Unix.

I agree that the default on Windows is wrong. “Input” isn’t much better.

replies(1): >>45095657 #
17. sunshowers ◴[] No.45095657{5}[source]
Tests that require CRLF should transform files as appropriate within a temporary directory. That way the costs of non-standard line endings are borne by the places that need it, as opposed to by all tooling in perpetuity.