Tôi đã nhân bản một repo git
và tôi cần bắt đầu một dự án mới dựa trên nó.Làm thế nào để thuận tiện đổi tên một Dự án Phoenix?
Làm cách nào để đổi tên nó, đảm bảo mọi thứ được xử lý?
Tôi đang sử dụng macOS.
Tôi đã nhân bản một repo git
và tôi cần bắt đầu một dự án mới dựa trên nó.Làm thế nào để thuận tiện đổi tên một Dự án Phoenix?
Làm cách nào để đổi tên nó, đảm bảo mọi thứ được xử lý?
Tôi đang sử dụng macOS.
Dựa tắt của nerdyworm's rename.sh, có sử dụng ack
Tôi đã thích nghi nó để sử dụng git grep
và chạy trên hệ điều hành MacOS dễ dàng.
• OTP NAME: Tên trường hợp rắn (snake_case) tên cho ứng dụng.
• NAME: Tên ứng dụng thông thường.
$ 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
Tôi không biết cách nào để làm điều này tự động với độ chính xác hoàn hảo, nhưng đây là các bước tôi làm theo cách thủ công khi tôi cần đổi tên các dự án Phoenix.
Các lệnh dưới đây giả định mã của bạn là trong một repo git
và ứng dụng cũ là my_app
/MyApp
và mới nhất là my_new_app
/MyNewApp
. Quá trình này rất dễ vỡ - nếu tên ứng dụng hoặc tên mô-đun của bạn có thể xuất hiện ở nhiều nơi (ví dụ: một chữ cái duy nhất là A
hoặc thứ gì đó), thì điều này sẽ không hoạt động.
# 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
Sau đó, tôi chạy mix test
và sửa bất kỳ lỗi biên dịch hoặc lỗi thử nghiệm nào.
Cuối cùng, tôi xem xét nhanh git diff
để đảm bảo mọi thứ đều đúng.
'lib/my_app.ex' không bị bắt bởi mẫu nào đó (tên tệp, không phải nội dung của tệp) – jaysoifer
Tôi đã sử dụng phương pháp này và nó hoạt động tốt, nhưng tôi cũng gặp phải vấn đề được đề cập bởi @jaysoifer - thật dễ dàng đủ để khắc phục điều đó. – skwidbreth
Tôi thường chỉ thực hiện tìm kiếm-thay thế của 'MyApp' với' MyNewApp', 'my_app' với' my_new_app', đổi tên thư mục 'lib/my_app' cho' lib/my_new_app', kiểm tra nếu nó vẫn biên dịch và cuối cùng cũng xem xét thủ công 'git diff'. – Dogbert
@RomanPerekhrest không quan tâm đến việc đổi tên ứng dụng và tham chiếu nội bộ trong mã. – jaysoifer
@ Dogbert bạn có muốn hiển thị rõ ràng các lệnh bạn đang sử dụng không? – jaysoifer