2010-02-26 27 views
5

Một nhóm trong công ty tôi làm việc vì có vấn đề sau. Họ phát triển một ứng dụng, sẽ có các bản dựng khác nhau (ví dụ: thiết kế khác nhau tùy thuộc vào khách hàng). để họ có một số mã được chia sẻ giữa các bản dựng và một số mã cụ thể để xây dựng. Ví dụ. đầu tiên xây dựng có (ví dụ là vô nghĩa về các tập tin, nó chỉ là để hiểu được vấn đề, tôi không biết chính xác mã khác)git + một phần tệp được chia sẻ giữa các nhánh/kho. Có thể không?

/src/class1.java 
/src/class2.java 
/res/image1.png 
/res/image2.png 

dự án thứ hai chứa

/src/class1.java 
/src/class3.java 
/res/image1.png 
/res/image3.png 

như bạn thấy, cả hai có class1.java và image1.png. Evething khác là khác nhau. Dự án phức tạp hơn nhiều, do đó, để chứa tất cả mọi thứ trong một dự án là không thoải mái ... Nhưng cũng để làm cho các chi nhánh khác nhau và cam kết cùng một mã số cho tất cả chúng không phải là ...

có lẽ tôi đã chọn sai hướng suy nghĩ về vấn đề này, nhưng tôi chỉ cần nhìn vào git (chúng tôi sử dụng svn), và nó cho phép kho riêng biệt. Câu hỏi đặt ra là: có thể tạo ra các nhánh khác nhau trong git hay không, nhưng hãy nói rằng "các tệp này nên được chia sẻ giữa chúng" và các tệp khác chỉ nên ở trong các nhánh đó. Sau đó, khi nhà phát triển cam kết class1.java git đồng bộ hóa nó trong tất cả các nhánh/repositorias vv Có lẽ có một giải pháp khác có thể dễ dàng thực hiện?

Trả lời

3

có thể tạo các nhánh khác nhau trong git, nhưng hãy nói rằng "các tệp này nên được chia sẻ giữa chúng" và các tệp khác sẽ chỉ nằm trong các nhánh đó.

Err ... no.
Khi bạn tạo chi nhánh, điều đó thực sự có nghĩa là mọi cam kết tương lai của bất kỳ tệp nào sẽ được ghi lại trong chi nhánh mới đó.
Vì vậy, nếu bạn không chạm vào class1.java, cam kết của nó vẫn sẽ được tham chiếu bởi nhánh gốc (nói 'common'), trong khi class2.java sẽ bị xóa và class3.java được thêm vào, tất cả trong chi nhánh 'project1'.
Bất kỳ ai tạo chi nhánh project2 từ common sẽ có hiệu lực tái sử dụng class1.java.

Sau đó, khi nhà phát triển cam kết class1.java git đồng bộ hóa nó trong tất cả các chi nhánh/repositorias vv

Ơ ... không có bis: các nhà phát triển sẽ phải cherry-chọn class1.java và hợp nhất nó vào chi nhánh 'common', và sau đó rebase tất cả các chi nhánh khác trên đầu trang của common để xem sự phát triển class1.java.

Các giải pháp thực tế sẽ là git submodules (xem here for more on the way submodules are updated), nhưng có liên quan đến:

  • một tổ chức lại các mã:
 
    project 
     src 
     class3.java 
         # here is a full git repo 
     common   # = referenced within the 'project' repo 
         # as submodule 
     src 
      class1.java 
    vẫn
  • một sự thúc đẩy để các 'thông thường' Git repo bất cứ khi nào class1.java được sửa đổi và các mô-đun con git cập nhật trong tất cả các nhánh/repos khác cần tiến hóa 'phổ biến' mới.
+0

Cảm ơn bạn, VonC! Có vẻ như hứa hẹn, ngoại trừ một điều - sắp xếp lại dự án, nhưng đó sẽ là một thứ khác, và tôi hy vọng với giải pháp quá :) trong vài từ - các nhà phát triển dự án thích rằng Eclipse tự xây dựng cho Android ... nhưng tôi nghĩ chúng ta có thể viết kiến ​​hoặc maven của chúng ta sẽ làm như vậy, nhưng biết rằng các nguồn nằm trong hai thư mục ... Nhưng nói chung - có vẻ đẹp, chỉ cần thử nó và nếu có câu hỏi nào tôi sẽ đăng chúng ở đây;) merci bien !!! – Maxym

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