Làm thế nào để cấu trúc kho git cho dự án?


9

Tôi đang làm việc trên một mô-đun đồng bộ hóa nội dung cho Drupal. Có một mô-đun máy chủ, nằm trên trang web ona và hiển thị nội dung thông qua một dịch vụ web. Ngoài ra còn có một mô-đun máy khách, nằm trên một trang web khác, tìm nạp và nhập nội dung theo định kỳ.

Máy chủ được tạo trên Drupal 6. Máy khách được tạo trên Drupal 7. Sẽ cần có phiên bản Druapl 7 của máy chủ. Và sau đó sẽ cần một phiên bản Drupal 8 của cả máy khách và máy chủ khi nó được phát hành vào năm tới.

Tôi còn khá mới đối với kiểm soát git và nguồn, vì vậy tôi đã tự hỏi cách tốt nhất để thiết lập kho git là gì? Nó sẽ là một trường hợp có một kho lưu trữ riêng cho từng trường hợp, tức là:

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

Hoặc sẽ có ý nghĩa hơn khi có một kho lưu trữ cho máy chủ và một kho lưu trữ khác cho máy khách sau đó tạo các nhánh cho mỗi phiên bản Drupal?

Hiện tại tôi có 2 kho lưu trữ - một cho khách hàng và một cho máy chủ.

Câu trả lời:


7

Trừ khi dự án thực sự rất lớn, tôi sẽ chọn một kho lưu trữ với các thư mục con cho máy chủ và máy khách và tạo một nhánh cho mỗi phiên bản. Bạn vẫn có thể có nhiều bản sao của kho lưu trữ trong trường hợp bạn muốn truy cập nhiều phiên bản cùng một lúc.

Bằng cách duy trì nhiều kho lưu trữ, bạn sẽ thực hiện chuyển các thay đổi khó hơn mức cần thiết (rebase dễ hơn áp dụng các bản vá). Trong trường hợp (không thể thực hiện được), sẽ không có thay đổi nào được áp dụng cho nhiều phiên bản, bạn vẫn không mất gì ...

Hơn nữa, bạn luôn có thể chuyển sang nhiều kho lưu trữ: Chỉ cần sao chép repo và xóa các nhánh bạn không muốn. Đi đường vòng khác khó hơn.

Tôi chỉ đi nhiều repos nếu máy chủ và máy khách không chia sẻ gì hoặc nếu mã thực sự rất lớn.


Đây là con đường tôi sẽ đi bởi vì Drupal lưu trữ các phiên bản khác nhau dưới dạng chi nhánh. Tôi cũng +1 nhưng cần 15 rep!
littledopero

4

Tôi đã thấy và làm việc với các biến thể như vậy. Mọi thứ trong một thư mục với các thư mục con cho máy chủ và máy khách hoặc một repo mỗi thư mục. Tôi thích repo duy nhất cho mọi phần chính của dự án.

Trong trường hợp thay đổi phiên bản lớn, tôi cũng chỉ cần tạo repos mới. Chắc chắn không có chi nhánh khác nhau cho họ. Mặc dù các nhánh rất mạnh để thực hiện chức năng mới và có thể là một nhánh triển khai vĩnh viễn, tôi luôn tránh việc có quá nhiều trong số chúng chạy song song trong một thời gian dài. Bạn sẽ luôn phải duy trì chúng (thực hiện các cuộc nổi loạn khi nhánh chính thay đổi, v.v.), vì vậy hãy giữ cấu trúc cơ bản càng đơn giản càng tốt. Có thêm một repo là (theo ý kiến ​​khiêm tốn của tôi) ít đau đớn hơn so với việc tung hứng các chi nhánh ở các tiểu bang khác nhau. Đặc biệt là nếu máy khách và máy chủ không chia sẻ nhiều mã.

Tôi không biết nhiều về Drupal và sự khác biệt mạnh mẽ giữa các phiên bản. Vì vậy, quan điểm của tôi để thích các repos khác nhau dựa trên kinh nghiệm của tôi với Rails. Giữa các phiên bản đôi khi có sự khác biệt lớn về những thứ như cách các tệp được đặt tên hoặc cấu trúc thư mục (ví dụ: đường dẫn tài sản) giúp tạo ra một repo mới thoải mái hơn. Drupal (hoặc bất kỳ khuôn khổ nào khác) có thể có ít sự khác biệt hơn, thì sẽ ổn thôi nếu cứ tiếp tục trong repo hiện có.


1
Cảm ơn. Thật thú vị vì tôi vừa phát hiện ra rằng các mô-đun Drupal Core lưu trữ các phiên bản riêng biệt dưới dạng các nhánh. Tôi nghĩ rằng nó có ý nghĩa đối với tôi để bắt chước cấu trúc đó. Tôi sẽ +1 nhưng cần 15 rep!
littledopero
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.