凤凰计划如何顺利更名?

How to smoothly rename a Phoenix Project?

我已经克隆了一个 git 存储库,我需要基于它开始一个新项目。

如何重命名它,确保一切都得到妥善处理?

我正在使用 macOS

我不知道有什么方法可以完美准确地自动执行此操作,但这些是我在需要重命名 Phoenix 项目时手动执行的步骤。

下面的命令假定您的代码在 git 存储库中,旧应用程序是 my_app / MyApp,新应用程序是 my_new_app / MyNewApp.这个过程很脆弱——如果你的应用程序或模块名称可以出现在很多地方(例如,它是一个字母 A 或其他东西),那么这将不起作用。

# search replace both the application name and module name in all files indexed by git
$ git ls-files -z | xargs -0 perl -p -i -e 's/my_app/my_new_app/g; s/MyApp/MyNewApp/g;'
# rename `lib/my_app`
$ mv lib/my_app lib/my_new_app

之后我 运行 mix test 并修复任何编译错误或测试失败。

最后,我快速查看了 git diff 以确保一切正常。

基于 nerdyworm's rename.sh,使用 ack 我已经将其改编为在 macOS[=23= 上使用 git grep 和 运行 ] 轻松。

OTP 名称:应用程序的 Snake Case (snake_case) 名称。

NAME:常规应用名称。

$ git grep -l $CURRENT_OTP | xargs sed -i '' -e "s/$CURRENT_OTP/$NEW_OTP/g"
$ git grep -l $CURRENT_NAME | xargs sed -i '' -e "s/$CURRENT_NAME/$NEW_NAME/g"

$ mv lib/$CURRENT_OTP lib/$NEW_OTP
$ mv lib/$CURRENT_OTP.ex lib/$NEW_OTP.ex