2017-04-08 20 views
5

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.

+0

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

+0

@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

+0

@ 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

Trả lời

0

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 
+0

Bất cứ điều gì cần phải được thay đổi để đổi tên một dự án Phoenix 1.3? – Emily

+0

@Thật không chắc chắn tôi đã hiểu câu hỏi của bạn, quá trình này hoạt động bất kể phiên bản của Phoenix (được thử nghiệm trên 1.2.x và 1.3.x). – jaysoifer

0

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.

+0

'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

+0

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

Các vấn đề liên quan