Quản lý nhiều phiên bản của ứng dụng web bằng Git


12

Chúng tôi có một gia đình các ứng dụng, tất cả đều có cùng một cơ sở. Cho đến bây giờ tôi đã phát triển cơ sở này và quy trình làm việc của Git rất đơn giản:

  • Phát triển được thực hiện trong developchi nhánh
  • Các tính năng mới được phát triển trong name-of-the-featurechi nhánh
  • Phát hành được thực hiện trong release-**chi nhánh

Cho đến bây giờ, mã là giống nhau cho mọi ứng dụng của gia đình. Giả sử cơ sở họ chia sẻ đã hoàn tất và từ giờ trở đi, mã sẽ khác nhau đối với mọi ứng dụng.

Tôi không chắc chắn nên xử lý git như thế nào và nhiều ứng dụng có cùng cơ sở.

  • Mỗi người trong số họ nên có dự án git riêng ?
  • Họ có nên ở cùng một dự án, nhưng mỗi người trong một chi nhánh riêng ?

Vấn đề là: nếu tôi đưa chúng vào các dự án riêng biệt, mọi sửa đổi được thực hiện trong cơ sở của ứng dụng sẽ phải lặp đi lặp lại trong mỗi ứng dụng. Tôi không rành lắm về git , nhưng nếu tôi lưu trữ từng dự án trong một chi nhánh , liệu có thể hợp nhất sửa đổi cơ sở với từng ứng dụng không?

Có ai đã trải qua một tình huống như thế này? Tôi không chắc chắn làm thế nào để tiến hành.

Cảm ơn!

EDITED Khi tôi nói phiên bản tôi không có ý nghĩa như số phiên bản. Chúng thực sự là các ứng dụng khác nhau có chung cơ sở.

Câu trả lời:


7

Để ứng dụng cơ sở trong kho lưu trữ của riêng nó và tạo các dự án mới phụ thuộc vào tệp bạn biên dịch từ kho lưu trữ đó.

Chi nhánh Git không dành cho nhiều ứng dụng. Git thích rằng bạn sử dụng một kho lưu trữ cho mỗi dự án hoặc một nhóm dự án liên quan. Các chi nhánh ở đó để bạn có thể phát triển các tính năng một cách cô lập, không phải vì vậy bạn có thể tạo dự án hoàn toàn mới mà không cần rời khỏi kho lưu trữ.

Bạn không muốn có nhiều ứng dụng chia sẻ mã - đó là một cơn ác mộng bảo trì. Nếu như bạn đề nghị bạn phát triển từng nhánh như trong repo trung tâm của mình, bạn sẽ có rất nhiều sự hợp nhất đang diễn ra để tuyên truyền các thay đổi cho mỗi ứng dụng. Việc phụ thuộc vào một thư viện riêng biệt và dễ dàng hơn nhiều và sử dụng thứ gì đó như Apache Maven để thu hút các phụ thuộc của dự án.


Phần lớn mã được chia sẻ là mã GWT (lượt xem, dịch vụ, v.v.). Có thể trích xuất nó vào một thư viện jar? Hoặc chỉ có thể mã java phía máy chủ?
João Daniel

Xem các yếu tố có thể được trích xuất, nhưng có thể không vào một cái bình. Chẳng hạn, javascript có thể được trích xuất từ ​​mỗi trang thành một tệp duy nhất sau đó có thể được bao gồm trong mỗi dự án. Mã chung nên được trích xuất thành các thẻ JSP. Bạn có thể không cần phải kéo toàn bộ trang, nhưng tôi không biết dự án của bạn, vì vậy tôi có thể sai.
Michael K

Bạn nghĩ gì về cách tiếp cận này: stackoverflow.com/a/2540471/2615737 ? nó có đường may hợp lý ...
Francisco Corrales Morales

Tôi không nghĩ đó là trường hợp sử dụng tương tự. Câu trả lời đó liên quan đến hai phiên bản của cùng một ứng dụng rất khác nhau, trong khi câu hỏi này là về những gì tôi thấy hoàn toàn là các ứng dụng khác nhau. Tôi vẫn không muốn có chi nhánh ngay cả trong trường hợp "hơi khác"; tuy nhiên, thật khó để phân tích chức năng để tách các thư viện trong Android nếu có bất kỳ xml xem nào có liên quan. Có vẻ như người trả lời đã không nghĩ rằng nó đáng để gây rắc rối cho tình huống của anh ta.
Michael K

6

Nếu các ứng dụng sẽ không tự sửa đổi cơ sở, hãy xem xét để lại cơ sở trong kho lưu trữ của riêng nó. Sau đó, tạo một kho lưu trữ mới cho mỗi ứng dụng riêng lẻ và thêm cơ sở dưới dạng mô hình con git .

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.