2010-06-18 22 views
5

Chúng tôi là một nhóm nhiều nhà phát triển làm việc trên một trang web sử dụng cả hai tập lệnh PHP tùy chỉnh và Joomla. Vấn đề là có nhiều nhà phát triển làm việc trên nhiều tính năng cần cập nhật thông tin trong Joomla (thêm mô-đun, thay đổi thông tin hiện có hoặc thay đổi cài đặt) và khi một nhà phát triển thay đổi thứ gì đó, anh ấy thường thay đổi cục bộ trước và sau đó thực hiện tương tự (hy vọng) trên máy chủ sản xuất. Không chỉ vậy điều này là rất dễ bị lỗi, nhưng các nhà phát triển thường quên nói với các nhà phát triển khác về những thay đổi. Các kịch bản PHP tùy chỉnh dễ dàng được chia sẻ giữa các nhà phát triển, nhưng những thay đổi trong Joomla thường bị lãng quên và họ dẫn đến các xung đột nghiêm trọng khi một nhà phát triển cố gắng nhân rộng các thay đổi cục bộ của mình trong sản xuất.Có thể đặt Joomla dưới sự kiểm soát sửa đổi không?

Tôi đã suy nghĩ về việc đặt Joomla trong một kho lưu trữ Mercurial, nhưng làm thế nào chúng ta có thể phân phối những thay đổi trong cơ sở dữ liệu giữa phát triển, thử nghiệm và các máy sản xuất?

Trả lời

6

Chúng tôi chạy tất cả các trang web Joomla của chúng tôi qua lật đổ, kiểm tra chúng theo yêu cầu. Chúng tôi chỉ chi nhánh bất cứ khi nào chúng ta cần phải thực hiện chính sửa đổi cho một dự án.

Nói chung, chúng tôi chạy một cơ sở dữ liệu thử nghiệm duy nhất được chia sẻ giữa tất cả mọi người để đảm bảo chúng tôi có dữ liệu nhất quán nhưng bạn có thể dễ dàng chạy DB của địa phương.

0

Nếu bạn xây dựng mọi thứ dưới dạng tiện ích mở rộng (mô-đun, thành phần và plugin), chúng phải bao gồm bất kỳ thay đổi cơ sở dữ liệu nào được yêu cầu. Tôi sẽ thiết lập nó để mỗi nhà phát triển đang làm việc với cơ sở dữ liệu cục bộ của riêng họ. Nếu bạn cần tải dữ liệu thử nghiệm, tôi sẽ chỉ tạo các tập lệnh MySQL có thể chạy sau khi bạn cài đặt tất cả các phần mở rộng. Vì tất cả điều này có thể được kiểm tra thành một repo, bạn nên tốt trên tất cả mọi người chia sẻ mã.

Sử dụng PHP, bạn sẽ có thể viết kịch bản nhanh sẽ bắt đầu bằng máy chủ trống, cài đặt Joomla !, cài đặt tất cả tiện ích mở rộng của bạn và sau đó đổ vào bất kỳ dữ liệu thử nghiệm nào. Có điều này cũng sẽ tốt cho các nhà phát triển để có được trở lại trạng thái "sạch". Tôi sẽ khuyến khích các nhà phát triển thiết lập lại trạng thái vàng trước khi họ bắt đầu bất kỳ công việc mới nào.

Một ý tưởng khác là sử dụng mysqldump để đổ tất cả các bảng của bạn. Nếu người dùng thực hiện thay đổi cơ sở dữ liệu trên máy cục bộ của họ, họ cũng cần phải loại bỏ thay đổi và kiểm tra nó.

0

Chúng tôi sử dụng SVN trên máy chủ của mình để quản lý các loại vấn đề này. Nếu bạn đang đi để làm bất kỳ phát triển sản xuất với một nhóm người bạn phải sử dụng một hệ thống kiểm soát sửa đổi. Có một số trên mạng, có google cho svn, cvs, git, đó là một số hệ thống kiểm soát phiên bản được chấp nhận phổ biến nhất. Nó có thể mất một thời gian để thiết lập ban đầu nhưng bạn sẽ gặt hái những phần thưởng từ nó!

Hy vọng điều đó sẽ hữu ích! Chúc mừng

+0

Vấn đề chính là cơ sở dữ liệu và thực tế là chúng tôi không thể kiểm soát những thay đổi nào được thực hiện cho cơ sở dữ liệu khi chúng tôi cài đặt hoặc xóa thành phần Joomla của bên thứ 3. – Tom

+0

Bạn có thể kiểm tra các tệp sql mà tất cả người dùng sẽ có quyền truy cập. Bạn có thể lưu trữ ở đây, hoặc cập nhật thói quen dữ liệu hoặc thêm cột vv như bạn muốn. Có lẽ một tệp sql trên mỗi bảng. Bằng cách này bạn có thể thấy những gì đã thay đổi từ thiết lập cơ sở dữ liệu ban đầu và bạn có thể áp dụng những thay đổi này cho các thiết lập cơ sở dữ liệu mới khi cần thiết. – Martin

2

Chúng tôi sử dụng SVN cho tất cả khách hàng của mình với các cơ sở dữ liệu riêng biệt. Khi cài đặt tiện ích mở rộng mới, cơ sở dữ liệu sẽ thay đổi. Với sự khác biệt của databasedump trước và databasedump sau khi cài đặt phần mở rộng, chúng tôi biết sự khác biệt là gì.

+0

Cũng là một ý tưởng rất hay! Tôi ước có cách chia câu trả lời ... – Tom

1

Đồng bộ hóa cơ sở dữ liệu rất khó, vì bạn muốn duy trì nội dung được lưu trữ trong trang web trực tiếp, trong khi cập nhật các bảng khác từ các trang web/trang phát triển của bạn.

nếu chỉ là nhà phát triển của bạn tạo thay đổi cơ sở dữ liệu (chứ không phải tiện ích mở rộng của bên thứ ba thêm bảng bổ sung không xác định) thì bạn có thể xem một cái gì đó như DBV https://github.com/victorstanciu/dbv.

Tôi đã thành công hợp lý với việc sử dụng các công cụ cơ sở dữ liệu như Navicat để thiết lập đồng bộ hóa cơ sở dữ liệu theo lịch.Đó sẽ là gợi ý của tôi vì nó cung cấp sự linh hoạt nhất trong việc xác định bảng nào được đồng bộ hóa ở đâu và khi nào.

Một lựa chọn khác có thể là để nhìn vào MySQL Replication, nhưng lần cuối cùng tôi nhìn thấy rất khó để thiết lập khi không có mối quan hệ master/slave rõ ràng giữa các cơ sở dữ liệu để được đồng bộ hóa

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