(dis) lợi thế của việc dàn dựng dev-> sản xuất bằng cách sử dụng 'drush rsync' so với 'git'?


9

Tôi thiết lập một trang web Drupal dưới sự kiểm soát của git cho công việc phát triển.

Nó được phát minh trong một bản gốc, repo GIT trần và khi các thay đổi được thực hiện trong các bản sao git dự án khác nhau của tôi và được đẩy trở lại bản gốc, một hook sau cập nhật ngay lập tức đẩy các thay đổi lên một trang web Staging trực tiếp duy nhất (http: / /staging.loc.). Không có gì đặc biệt, hoạt động như mong đợi.

Tôi cũng đã đánh dấu trang web "@STAGING". Thỉnh thoảng, tôi muốn quảng bá các thay đổi của mình từ trang Staging sang máy chủ sản xuất.

Hai phương pháp tương đối đơn giản đến với tâm trí:

(1) Tại thời điểm trang Staging xuất hiện ổn định, hãy tạo trang Sản xuất dưới dạng kiểm tra git từ repo chính,

(2) sử dụng drush rsync+ drush sql-synctừ vị trí dàn đến vị trí sản xuất.

Cả hai có thể được thực hiện để làm việc. Khác với thực tế là (2) có vẻ như Drupal-centric / nhận thức theo bản chất - rốt cuộc, drush là một bộ công cụ dành riêng cho Drupal - những ưu điểm tương đối của hai phương pháp này là gì?

Có bất kỳ lý do cụ thể nào tôi nên xem xét (1) hơn (2) không?

Trong cả hai trường hợp "Mọi thứ" đều nằm trong ít nhất một trường hợp kiểm soát sửa đổi ...

Câu trả lời:


3

Tôi đã sử dụng cả hai kỹ thuật. Cả hai đều có thể được sử dụng để đảm bảo rằng các tệp giống nhau mà bạn kiểm tra trên @stage kết thúc trên @live. Ưu điểm của rsync là bạn không kết thúc với các tệp bổ sung (ví dụ: ".git" và được liên kết) trên máy chủ sản xuất của bạn. Tôi có xu hướng rsync đến một vps và sử dụng git trên hộp tôi sở hữu (ví dụ: các trang web mạng nội bộ).


Cảm ơn cho điểm. Tôi chỉ nhìn vào các tùy chọn loại trừ. Điều đó giúp giữ cho mọi thứ sạch sẽ. Iiuc, tôi cần chỉ định những gì cần loại trừ "rsync' => array ('exclude-paths' => '.git:.DS_Store:.gitignore:.gitmodules:',"trong tệp .rc, mặc dù tôi không chắc chắn liệu tôi có cần điều đó trong cả các đặc tả của bí danh nguồn và đích hay chỉ một hoặc khác.

.git nên được bỏ qua theo mặc định. Chạy 'drush - fax rsync [tùy chọn] @a @b' để xem lệnh rsync chính xác mà Drush sẽ chạy. Sử dụng --include-vcs nếu bạn muốn rsush drush bao gồm .git và các tệp liên quan đến vcs khác.
greg_1_anderson

Tôi cần đọc chi tiết hơn; Tôi đã không nhận ra rằng .git đã bị loại trừ. Cảm ơn các gợi ý mô phỏng quá. Re: OP, tôi nghĩ rằng tôi sẽ gắn bó với 'rsush drush' vì nó được thiết kế để trở thành một phương thức triển khai cho drupal & works. git có thể hoạt động tất nhiên nhưng giờ tôi đã bắt gặp đủ các bình luận mà nó không được thiết kế để triển khai ...

1

Vấn đề với việc sử dụng rsync drush là nếu bạn có nhiều người đẩy các thay đổi đến máy chủ.

Ví dụ của bạn chỉ cho thấy một người thúc đẩy thay đổi.

Nếu bạn có nhà phát triển A đẩy các thay đổi của cô ấy và sau đó nhà phát triển B đẩy các thay đổi của anh ấy, bạn muốn git để dọn dẹp các xung đột hoặc làm cho nhà phát triển B xử lý các xung đột.


1

Tôi thực sự sử dụng cả hai. svn / git và rsync phục vụ hai mục đích khác nhau. svn / git là để kiểm soát nguồn rsyncsql-syncđể đồng bộ hóa dàn dựng và sản phẩm hiệu quả. drush rsync @staging @prodlà rất khó để đánh bại về mặt đơn giản và rất dễ tích hợp trong hầu hết mọi continuous Integrationmôi trường nếu bạn muốn tìm hiểu sâu hơn về phương pháp / phương pháp nghiên cứu chất lượng mã.


1

Cá nhân tôi sử dụng Git để kiểm soát phiên bản, triển khai và đồng bộ hóa các cơ sở mã máy chủ khác nhau và sau đó rsync để di chuyển / đồng bộ hóa tệp người dùng (bỏ qua bằng cách thêm các đường dẫn nhất định vào tệp .gitignore).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.