it-swarm-vi.com

Làm cách nào để hợp nhất các thay đổi từ bản sao phát triển của trang web sang trang trực tiếp mà không mất nội dung mới?

Quy trình tốt nhất để hợp nhất công việc được thực hiện trên bản sao phát triển của trang web với bản sao sản xuất trực tiếp là gì? Thông thường, đã có rất nhiều nội dung mới được thêm vào trang web kể từ khi phát triển bắt đầu với các tính năng mới nhất. Và hầu hết các bổ sung cho một trang web sẽ liên quan đến thay đổi cơ sở dữ liệu. Vì vậy, sao chép bất kỳ tập tin mới là dễ dàng, nhưng cơ sở dữ liệu thì sao? Làm cách nào để hợp nhất các thay đổi của bạn với cơ sở dữ liệu sản xuất hiện có mà không làm mất nội dung mới được thêm vào kể từ lần cuối bạn cập nhật trang web sản xuất? Có mô-đun nào giúp với điều này?

40
Chaulky

Đối với các loại nội dung, chế độ xem và thay đổi cấu trúc trên trang dev hãy xem bằng cách sử dụng Tính năng để xuất cơ sở dữ liệu sang mã.

Đối với di chuyển nội dung có nhiều tùy chọn, nhưng không phải là một giải pháp vững chắc. Một ví dụ là Bộ triển khai .

16
budda

Về cơ bản, tôi đã áp dụng hai trường phái tư tưởng (trường phái tư tưởng thứ 3, làm cơ sở dữ liệu khác nhau, tôi sẽ không thảo luận vì độ phức tạp khá cao).

1) Triển khai bằng cách loại bỏ cơ sở dữ liệu sản xuất và nhập một mysqldump của cơ sở dữ liệu phát triển. Tùy chọn, chạy một tìm kiếm/thay thế regex trước trên bất kỳ liên kết tuyệt đối được mã hóa cứng nào tham chiếu URL dev trong kết xuất SQL. Sau khi nhập dev db vào prod, sau đó tự động chạy các câu lệnh SQL (thường thông qua tập lệnh) để thay đổi bất kỳ cài đặt nào khác với prod so với dev (ví dụ: có thể bạn có trong bảng biến một số cài đặt kết nối để kết nối với các hệ thống bên ngoài mà bạn cần thay đổi để trỏ đến các hệ thống bên ngoài prod thay vì tại phiên bản dev).

2) Sử dụng mô đun Tính năng , như được đề cập bởi phật, cho cài đặt quản trị viên và sử dụng mô đun Xuất nút để xuất/nhập nội dung kết hợp với = Xóa tất cả mô-đun. Vì vậy, quy trình làm việc là:

  1. sử dụng node_export và các tính năng để xuất các nút/tính năng sang tệp
  2. Kiểm soát phiên bản tùy chọn (và hy vọng)
  3. Tải tập tin trên hệ thống prod
  4. Sử dụng giao diện drush hoặc admin để tải các tính năng
  5. Sử dụng drush xóa-all hoặc giao diện quản trị để xóa tất cả các nút của loại bạn muốn nhập
  6. Sử dụng drush ne-import hoặc giao diện quản trị để nhập các nút từ tệp nút bạn đã xuất.

Một lưu ý, tôi rất khuyến nghị nên áp dụng quy trình làm việc tiêu chuẩn, trong đó nội dung chỉ đi theo một hướng. Hoặc Dev -> Prod hoặc Prod -> Dev (Tôi thích cái này).

Tôi đã thực hiện điều này và đang thực hiện điều này trên một số hệ thống lớn, với kết quả khá tốt, nhưng sẽ luôn có nhiều cách để cắt Apple này, chọn cách nào phù hợp nhất với bạn.

2
coderintherye

Cơ sở dữ liệu kết xuất của bản sao trang web trực tiếp và bản sao phát triển của trang web trong tệp SQL (sử dụng cùng một tham số & cài đặt cho cả hai bãi chứa).
[.___.] Sau đó, so sánh cả hai tệp SQL bằng một công cụ so sánh nhỏ TestDiff . Nó sẽ hiển thị các tệp khác nhau cạnh nhau với các màu khác nhau. Bạn cũng có thể trực tiếp chuyển đến sự khác biệt (không cần cuộn). Kiểm tra sự khác biệt và thêm/chỉnh sửa các dòng vào tệp SQL của trang web trực tiếp. Đảm bảo không có đường dẫn/URL tuyệt đối của môi trường phát triển trong tệp đó. Đã xong! Thời gian để khôi phục cơ sở dữ liệu cho trang web trực tiếp.
[.___.] Làm cho cuộc sống của bạn dễ dàng hơn: Trong bước đầu tiên, chỉ kết xuất những bảng được thay đổi. Ví dụ: nếu bạn đã chỉnh sửa một mô-đun trong bản sao phát triển nhắm mục tiêu một bảng riêng biệt, chỉ kết xuất bảng này. Nếu bạn không chắc chắn về bảng cụ thể, toàn bộ cơ sở dữ liệu sẽ ổn.

1
user931