2008-09-24 30 views

Trả lời

6

Mặc dù điều này phụ thuộc vào những gì bạn đang làm, hầu hết các ứng dụng sẽ có thể chỉ cần nâng cấp và sau đó sửa mọi thứ bị hỏng. Theo kinh nghiệm của tôi, những điều chính mà tôi phải sửa sau khi nâng cấp là

  1. Thay đổi một số nội dung thú vị bằng các mô hình, chẳng hạn như cú pháp cho các khóa ngoại tiếp theo.

  2. Một bộ thay đổi mẫu nhỏ, đáng chú ý nhất là tự động thoát.

  3. Bất kỳ điều gì phụ thuộc vào cấu trúc cụ thể của nội bộ của Django. Đây không phải là một vấn đề, trừ khi bạn đang làm công cụ như thay đổi động nội bộ Django để thay đổi hành vi của họ theo cách cần thiết/thuận tiện cho dự án của bạn.

Để tóm tắt, trừ khi bạn đang làm rất nhiều thứ phức tạp và phức tạp, việc nâng cấp đơn giản sẽ không gây đau đớn và chỉ yêu cầu một vài thay đổi.

+1

Đừng quên quản trị viên và thay đổi biểu mẫu. Đó là những điều quan trọng. Quản trị viên không khó. Các hình thức, tuy nhiên, có thể là kẻ giết người. –

3

Nâng cấp. Đối với tôi, nó rất đơn giản: thay đổi __str__() thành __unicode__(), viết cơ bản admin.py và hoàn tất. Chỉ cần bắt đầu chạy ứng dụng của bạn trên 1.0, kiểm tra nó và khi bạn gặp phải lỗi, hãy sử dụng tài liệu trên backwards-incompatible changes để xem cách khắc phục sự cố.

2

Chỉ cần nâng cấp ứng dụng của bạn. Việc chuyển đổi từ 0,96-1,0 là rất lớn, nhưng về các thay đổi ngược không tương thích, tôi nghi ngờ ứng dụng của bạn thậm chí có 10% trong số đó.

tôi đã được trên thân cây trước khi Django 1.0 vì vậy tôi chuyển đổi đối với tôi là theo thời gian nhưng thậm chí sau đó những điều quan trọng duy nhất mà tôi đã phải thay đổi là newforms, newforms-admin, str() để unicode() và maxlength to max_length

Hầu hết các thay đổi khác là các tính năng mới hoặc viết lại phụ trợ hoặc nội dung như một người xây dựng trang web cơ bản thậm chí không đến gần.

1

Chỉ những trang web đơn giản nhất mới dễ nâng cấp.

Mong đợi nỗi đau thực sự nếu trang web của bạn xảy ra cho non-ASCII một phần của thế giới (đọc: ở bất kỳ đâu bên ngoài Hoa Kỳ và Vương quốc Anh). Sự thay đổi đau đớn nhất trong Django đã được chuyển từ bytestrings để unicode đối tượng nội bộ - bây giờ bạn phải tìm tất cả những nơi mà bạn sử dụng bytestrings và thay đổi điều này để unicode. Trường hợp xấu nhất là việc tạo mẫu, bạn sẽ không bao giờ biết bạn đã quên thay đổi một biến cho đến khi bạn nhận được UnicodeError.

khác điều đáng chú ý: thao tác (oldforms) đã biến mất và bạn không có cách nào khác ngoài việc viết lại tất cả các phần với các hình thức (newforms).

Nếu đây là trường hợp của bạn và dự án của bạn lớn hơn 2-3 ứng dụng, tôi sẽ khá miễn cưỡng nâng cấp cho đến khi thực sự cần thiết.

1

Chúng tôi đã nâng cấp trong quy trình nhiều bước và tôi khá hài lòng với điều đó. Các ứng dụng trong Câu hỏi là khoảng 100.000 LoC và chạy một số chức năng kinh doanh cốt lõi với rất nhiều giao tiếp với các hệ thống di sản.Chúng tôi đã làm việc như vậy:

  1. Cập nhật lên django 0,97-66 unicode hợp nhất. Khắc phục tất cả sự cố unicode
  2. tái cấu trúc ứng dụng thành ứng dụng có thể sử dụng lại, thêm kiểm tra. Điều đó đã để lại cho chúng tôi 40.000 LoC trong ứng dụng chính/Dự án
  3. Nâng cấp lên django 0,97-đăng nhập tự động kết hợp. Sửa lỗi tự động thoát trong các ứng dụng có thể tái sử dụng được tạo trong 3. Sau đó, khắc phục các sự cố tự động thoát còn lại trong ứng dụng mian.
  4. Nâng cấp lên 1.0. Những gì còn lại chủ yếu là sửa chữa các công cụ quản trị.

Toàn bộ điều mất khoảng 6 tháng khi chúng tôi chạy chi nhánh sản xuất cũ trên máy chủ của chúng tôi trong khi chuyển một chi nhánh khác sang 1.0. Trong khi làm như vậy chúng tôi cũng có thêm tính năng cho chi nhánh sản xuất.

Việc hợp nhất cuối cùng kém hơn nhiều so với dự kiến ​​và mất khoảng một tuần cho 4 lập trình viên hợp nhất, xem xét, thử nghiệm và sửa chữa. Chúng tôi sau đó tung ra, và trong khoảng một tuần đã bị cắn bởi lỗi trước đó bất ngờ.

Tất cả trong tất cả, tôi khá hài lòng với kết quả. Chúng tôi có một codebase tốt hơn nhiều để phát triển hơn nữa.

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