Replies: 3 comments 10 replies
-
Thank you for some clear and interesting feedback!
That's an interesting compromise. I might be forgetting some fatal flaw, but I don't remember thinking about it. It has some advantages:
|
Beta Was this translation helpful? Give feedback.
-
This aspect of |
Beta Was this translation helpful? Give feedback.
-
I think finding a good [revsets]
log = "log()"
[revset-aliases]
"local_heads()" = "@ | branches()"
"log()" = "@ | trunk() | ancestors(immutable_heads().. & (remote_branches().. | ..local_heads()), 2)" |
Beta Was this translation helpful? Give feedback.
-
In random order.
There were some kinks, missing features I'd like (I opened some issues), git fetching is slow, and there is a bug making almost every
jj git fetch
download the whole repo from scratch for no reason. Not blockers, and I kind of expected in a young project, so 🤷 .I think there at least be a way to opt-out out of automatically adding files. I don't miss the staging area when using
jj
, but I don't want it to pick some random files into a change, because something somewhere created a file in a working tree. Sure, I'm all for working copy hygiene, but I need to work with project that were not created by me and sometimes accidentally create files somewhere, and when I'm debugging it's annoying that I can'tsomecommand > some.out
to make a temporary file. IMO, files should be tracked only after they have been explicitly "added" under revision control. After that changes in them can be tracked automatically. But it would be fine if it was an opt-out behavior.In branchless workflow I can't figure out a good way track my in progress work. In
git
normally I dog b <shortdesc>
and then git tracks my local branches and I can list them withg b
. Yeah, I'm a heavy git user, and I have aliases for everything. But you get the picture - since I create local branches, there's a natural way to track stuff. With a branchless model, I like the fact that I don't need to make branches. But I don't know how to list "all my not-branches, against trunk and other branches (like release branches that need backports)". I tried to come up with revset formula, but it all felt short because of inability to tell local stuff from non-local things. I'm working with repos with long history, many branches pushed to remotes, cherry-picks, etc. People on Discord helpfully suggested some trivial@
againsttrunk()
orimmutable_branches
formulas, which were all too simplistic. This was my main reason to give up on trying to usejj
.The git integration is kind of indecisive. IMO, in a world that standardized on git, the only way to have a chance to dethrone git, is to first be such a good git frontend that everyone just default to using it, and then attempt to abandon the underlying
git
internals. I've hit bunch of papercuts w.r.t. git, and while they can be solved, I'm surprised that e.g.--colocate
is required and not the default, where 99% of people will be migrating from git and needing to work with git project on a daily basis. In a similiar way thejj git push
, etc. could just bejj push
. I realize that the project might have started frond the ground up as a different revision control system, that might internally be better, and it might be emotionally hard to make the interesting part the second place use-case, but that's just my opinion - the world does not care about technical details, only their own immediate convenience and time, and people will rather struggle for years with git UX (especially if they can bandaid it with GUIs and such), rather then go through pain of dealing with something unfamiliar. The more similiarjj
is to git, the less pain, the more chance for popularity. And popularity brings users and developers.I'm really going to miss ability to just
jj edit <changeid>
and get everything rebased, and the fact merge conflicts seamlessly just sit there and wait for their turn to get resolved. I really, really enjoyed it.Beta Was this translation helpful? Give feedback.
All reactions