-
Notifications
You must be signed in to change notification settings - Fork 269
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
Revamp update
process
#2248
Comments
I think we need to revamp the "current namespace" UX and that'll help with number 1. I'm looking for an existing ticket on this, but can't find one.
What does this mean? Ah, the auto-propagate kind of
Agreed. Questions: What happens here if I update a definition twice <cough#1758cough> before completing my todos? |
@pchiusano to schedule a time to discuss this one |
Also if we have |
Current design and some commentary is here: https://gist.github.com/pchiusano/548032b98d5d6b29cb4314421a231a42 |
Just discussing this with @aryairani and we came up with a few ideas to keep the default patch super clean:
|
#3504 maybe goes here |
https://gist.github.com/pchiusano/548032b98d5d6b29cb4314421a231a42 has a writeup of the problem we are trying to solve and proposed new workflow.
Old commentary, out of date
A couple things I am aware of:
todo
where it doesn’t report things that depend transitively on the mapped definitions in patch, only the things that depend directly on the mapped definitions. This can lead to confusing results where an update propagates to immediate dependents, which are able to typecheck, but when their dependents can’t typecheck, that isn’t reported as a todo, even though they still depend on an old hash.patch.cleanup lastrelease trunk.patch
which also culls out any entries whose LHS isn't mentioned inlastrelease
. In this way you might restrict a patch to just talk about upgrades to definitions from the last release of a library; anything else is just local churn.Phase 1 of this is just a design jam. cc @rlmark @runarorama @stew @hojberg
—
Misc ideas from @pchiusano
When you
update foo
, it adds the entries to the patch but also adds old definition to the namespacefoo
, adding.deprecated
onto the end of their names. Propagation also adds definitions tofoo
.todo foo
then reports if stuff depends on anything infoo
in addition to checking for patch conflicts for thefoo
patch and any name conflicts in the current namespace. When you’re done, you justdelete.namespace foo
.This idea of putting the in-progress, deprecated definitions into a namespace that you delete when you’re done (possibly
todo
command can suggest this if there’s nothing todo) feels like a nicer experience during the refactoring process: you can see the code you’re refactoring depends onmyRefactoring.blah.deprecated
rather than likeblah#303489a
.I’m not even sure that we need “old names” support at all with this design. In general, I think showing people a name plus a hash is not a good experience and we should try not to do that were possible - people are going to want more context.
The text was updated successfully, but these errors were encountered: