2012-11-06 32 views
5

tôi có một dự án bao gồm một thư viện và các ứng dụng khác nhau:chức năng submodule git với anh chị em?

foo/ 
foolib/ 
bar/ 
baz/ 
qux/foo/ 

Tất cả các ứng dụng liên kết chống lại foolib, thư viện tĩnh.

Tôi muốn git commit trên foo để ghi lại ID SHA1 về nơi foolib đang ở, và cũng tình trạng git trên foo báo cáo nếu có sự thay đổi không bị giam trong foolib.

Tuy nhiên tôi không muốn di chuyển foolib để có bản sao của nó dưới dạng thư mục phụ của mọi ứng dụng. Cũng như là bloaty, điều này sẽ mất khả năng thử một số thay đổi đối với foolib trong nhiều ứng dụng mà không thực hiện các thay đổi.

Tôi đã thử tạo tệp .gitmodules trỏ đến ../foolib nhưng dường như nó bị bỏ qua hoàn toàn bởi trạng thái git git. Tôi cũng đã thử làm cho foolib một liên kết mềm bên trong foo, nhưng git dường như coi liên kết mềm dưới dạng tệp thay vì theo liên kết.

Là những gì tôi muốn có thể, hoặc bạn có bất kỳ giải pháp thay thế dòng công việc nào không?

Trên kho lưu trữ công khai của tôi, cấu trúc giống nhau và mỗi ứng dụng (và ngu ngốc) đã được nhân bản riêng lẻ từ công chúng.

Trả lời

1

Ý tưởng sẽ được để tạo ra khác repo fooProject, mà sẽ tuyên bố như submodules:

  • foo
  • foolib

(Nếu bạn gọi dự án cha mẹ của bạn appProjects thay của fooProject, bạn có thể khai báo dưới dạng submodules tất cả các thư mục con: foo, foolib, bar, baz ...)

Nếu bất kỳ thư mục con (foo hoặc foolib) thay đổi và làm mới cam kết, bạn quay trở lại repo phụ huynh và cam kết là tốt, để ghi lại SHA1 của các submodules khác nhau.

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