Skip to content
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

feat: support auto migrate your v3 form #73

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AshoneA
Copy link

@AshoneA AshoneA commented Mar 2, 2020

add --migrateform to auto migrate old form

@AshoneA AshoneA force-pushed the feat/migrate-form branch 2 times, most recently from c120bb6 to a9831ce Compare March 2, 2020 10:21
@vagusX
Copy link
Member

vagusX commented Mar 2, 2020

@AshoneA 麻烦解决下冲突,其他 +1 👍

@AshoneA AshoneA force-pushed the feat/migrate-form branch from a9831ce to 56d44dd Compare March 2, 2020 13:32
README.md Outdated Show resolved Hide resolved
@AshoneA
Copy link
Author

AshoneA commented Mar 2, 2020

已经rebase最新master

@AshoneA AshoneA force-pushed the feat/migrate-form branch from 56d44dd to 0676c4d Compare March 2, 2020 13:35
@AshoneA
Copy link
Author

AshoneA commented Mar 2, 2020

@vagusX 因为昨天第一次写jscodeshift ,有不好的地方劳烦指出哈。

README.zh-CN.md Outdated Show resolved Hide resolved
@AshoneA AshoneA force-pushed the feat/migrate-form branch from 0676c4d to 0383b9f Compare March 2, 2020 15:11
@vagusX vagusX requested a review from zombieJ March 3, 2020 08:28
@zombieJ
Copy link
Member

zombieJ commented Mar 3, 2020

如果转换中发现不通过会回滚吗?

@afc163
Copy link
Member

afc163 commented Mar 3, 2020

有一定的风险,默认不要开启,给个命令行参数开启。

@vagusX
Copy link
Member

vagusX commented Mar 3, 2020

给个命令行参数开启

默认是不开启的,只有额外执行才能转换

@AshoneA
Copy link
Author

AshoneA commented Mar 3, 2020

给个命令行参数开启

默认是不开启的,只有额外执行才能转换

对的,而且这是一条单独的命令,只会转换 Form

@AshoneA
Copy link
Author

AshoneA commented Mar 3, 2020

如果转换中发现不通过会回滚吗?

额, 不通过指的是?因为其实我只会对符合规则的 FormForm.Item 做转换

@vagusX
Copy link
Member

vagusX commented Mar 3, 2020

如果转换中发现不通过会回滚吗?

额, 不通过指的是?因为其实我只会对符合规则的 FormForm.Item 做转换

@zombieJ 的意思是这个因为 v3 -> v4 的 Form 是部分 API 不兼容,这个转换假设失败了,用户有没有机会回滚掉这个变更

从目前的角度来说,用户每次运行都要保证自己的代码 git 工作区是干净的,因此在用户执行脚本的时候,如果失败了,只需要撤销 codemod 脚本运行带来的变更即可

那么针对上述问题,是否需要写到文档呢 @zombieJ @afc163

@zombieJ
Copy link
Member

zombieJ commented Mar 3, 2020

那么针对上述问题,是否需要写到文档呢 @zombieJ @afc163

控制台里可以报一下,说 advance 转换失败,降级成兼容包之类的。

@vagusX
Copy link
Member

vagusX commented Mar 4, 2020

换失败,降级成兼容包之类的。

我认为应该是将这个特性标注为 实验性特性,告知用户如果出现替换导致运行问题,请撤销 codemod 带来修改之类

@AshoneA
Copy link
Author

AshoneA commented Mar 5, 2020

image

在用户输入转换命令之后给用户一个 prompt 提示怎么样?告知用户潜在的风险和之后转换失败的处理,用户也可以输入 no 来结束本次转换。

@zombieJ
Copy link
Member

zombieJ commented Mar 5, 2020

转换失败后应该自动降级回原来的兼容包模式并且 console 告知当前状态转换失败,如果可以也可以列举转换失败的原因,这个过程除了开头的命令参数不需要用户额外参与。

@AshoneA
Copy link
Author

AshoneA commented Mar 5, 2020

转换失败后应该自动降级回原来的兼容包模式并且 console 告知当前状态转换失败,如果可以也可以列举转换失败的原因,这个过程除了开头的命令参数不需要用户额外参与。

其实不太能做到,因为只有转换之后实际运行的时候才会知道有没有转换成功。我最初的想法是想让用户在迁移的时候能够有个工具帮他们做掉一些重复的工作,只能算是一个工具配合手动迁移使用,剩下的工作还是需要自己来手动完成。

@zombieJ
Copy link
Member

zombieJ commented Mar 5, 2020

其实不太能做到,因为只有转换之后实际运行的时候才会知道有没有转换成功。我最初的想法是想让用户在迁移的时候能够有个工具帮他们做掉一些重复的工作,只能算是一个工具配合手动迁移使用,剩下的工作还是需要自己来手动完成。

这样会有非常多的答疑成本,用户转化完成后总是希望代码可以正常运行。如果我们的逻辑会有疏漏,使用时也不一定能够立刻发现。可以看看弄一些模式匹配,如果是符合某些条件再执行自动转换。要么不转,转完就能符合预期的跑。如果需要运行时 debug 找原因反而就提高用户的迁移成本了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants