-
Notifications
You must be signed in to change notification settings - Fork 343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cli: deprecate jj checkout
and jj merge
#2842
Conversation
I think we've aimed for at least 6 months before. I see little harm in giving users a bit longer. It's cheap to maintain, and users are probably not deliberately going to keep using the old commands if we warn every time as we do after this PR. What do you think? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for finally doing finishing this :-). I've left some comments. A final question is what do we do with jj checkout
's aliases, do they stay as convience aliases or are they just removed?
This was something we didn't decide on the last time the deprecation was brought up in Discord, IIRC ilya is a big user of jj co
.
I think 6 months is fine, so I adjusted it the timeline in the CHANGELOG. But I removed the exact notice of version in the error messages as Philip asked; it's only now mentioned in the changelog. I feel this is a good balance, since it's not something people will precisely beat us over the head with, it at least gives them an idea of when it will happen, and the actual deadline itself isn't too committal. I'm not sure about adding a rationale to the actual message; I don't think making it too long helps. I'll think about it a tiny bit more. |
We could remove them when the commands are actually turned into hard errors, allowing them to be reused; so that Right now, aliases cannot override any command even if it's a no-op. So we'd otherwise have to fix that. |
fe83e4a
to
07e7e37
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Basically #1713 (comment) and the following two messages seem a more appropriate approach. I think ATM moving the aliases to My argument for the whole thing is that a CLI is basically a API, so the same concepts should apply.
|
I've spotted two places in the documentation where checkout is mentioned.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left some very minor and optional nits about the changelog.
I think this is a good change, hopefully other users will agree.
Please also fix the docs mentioned by @Fraetor.
This seems very close to done. Do you think you can find time to get this merged before I cut a new release next week? |
Yeah, I should be able to do it tonight or this weekend I think. |
07e7e37
to
68c38a3
Compare
I think I've addressed everyone's nits; however, I have still left the rationale in the changelog, and the reason is simple: because users read the changelog, but we read the history. It's simply friendlier to explain this deprecation there, in my opinion. I have however made the actual changelog entry much shorter and more direct, and I've also put the more detailed rational in the commit messages themselves as requested. So I think this is a good end result all around. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
68c38a3
to
c532a1b
Compare
I sent #2929 to unblock CI |
These didn't really need to use `jj checkout`, and it will be deprecated in a future change anyway. Move them out of there and into `new`. Ideally this would go into `test_conflicts.rs`, but that exists in `jj-lib`, so it doesn't have `TestEnvironment` available to it. Signed-off-by: Austin Seipp <[email protected]> Change-Id: If0173b27ab4d1f6036a4ec632ec77b6824f310c3
Summary: As discussed in Discord, on GitHub, and elsewhere, this change deprecates the use of `jj checkout` and suggests users use `jj new` exclusively instead. The verb `checkout` is a relic of a bygone era the — days of RCS file locking, before 3-way merge — and is not a good, fitting name for the functionality it provides. To further drive the bit home, by default, `jj checkout` (and `jj co`) is now hidden. This will hopefully stop new users from running into it. Signed-off-by: Austin Seipp <[email protected]> Change-Id: I7a1adfc9168fce1f25cf5d4c4c313304769e41a1
Summary: As discussed in Discord, on GitHub, and elsewhere, this change deprecates the use of `jj merge` and suggests users use `jj new` exclusively instead. `merge` isn't completely unfit as a name; but we think it obscures the generality of `new` and we want people to use it instead. To further drive the bit home, by default, `jj merge` is now hidden. This will hopefully stop new users from running into it. Signed-off-by: Austin Seipp <[email protected]> Change-Id: I94938aca9d3e2aa12d1394a5fbc58acce3185b56
Summary: Put both notices together at once, for ease of reading and understanding. Signed-off-by: Austin Seipp <[email protected]> Change-Id: I2aedb42fdab346b21990a106433512d7ec119ad4
c532a1b
to
7296354
Compare
(Non-blocking)
I think I'd literally make them into default aliases in the built-in settings. Then, people can change them. But this is not important that we do so and it's a discussion for another time. |
That's a good idea; we can still follow up on that in time for the release window, I think. But yes, I'll go ahead and merge this. |
Was chatting with @martinvonz today about the warning we now show.
This seems like a reasonable approach to me, though it does make it more difficult to tell users "have you considered That being said, it did confuse an internal user when they wrote
|
I did request the same thing in #2866 (comment). I'm guessing @jyn514 might be working on a simpler version of that feature first, though. |
I am strongly against upholding the whole git shtick, as removing these commands makes I also dislike that this concern was raised so late after we discussed the removal for so long. |
I don't think keeping
That's #323. Let's keep this discussion focused on
Not all users are going to be part of our Discord and/or GitHub discussions, so they will not notice until they upgrade to a release with the new behavior. |
To be complete: I don't think to use |
My main point is being unique with not having these commands at all. The best moment to remove something is yesterday, today or not at all.
This was a purely rhetorical question, in terms of going back to the old ways because innovation shouldn't happen.
Matt is atleast in the Discord, not a dogfooded user which I never heard of, so there should atleast be a better way to present internal feedback to OSS users instead of just backing out something with a unreasonable short explanation and response time. |
I tried to explain it in 97d1cb7. I'm sorry that it felt unreasonably short. What additional information would you have wanted me to include? Or maybe your objection is to using a PR for discussion? Oh, I should probably have included "RFD:" in the PR title? I'll update it. |
Both of them seemed fast to me, especially the second one. |
No, it was based on feedback I've heard from several people over many months.
I'm sorry, but I think you're an unusual user :) Most users come from Git, and Git does have a |
Actually, there's already #3015 that can be looked at. |
As discussed on Discord and in previously in #1713, this deprecates
jj checkout
andjj merge
, as they are simply specializations for existing functionality underjj new
.Both commands are now hidden by default from
help
.Supersedes #1713.
Checklist
If applicable:
CHANGELOG.md