2009-09-22 14 views
8

Chúng tôi đã xem xét các mô-đun con git và chúng tôi đang tự hỏi những lợi thế (nếu có) là có một kho lưu trữ bằng cách sử dụng các mô-đun con có một kho lưu trữ trong kho khác với tệp .gitignore.Lợi thế của việc sử dụng các mô đun con git khi có repo bên trong một repo khác với gitignore là gì?

Ví dụ mà không submodules:

mkdir a 
cd a 
git init 
touch test1.txt 
echo "b" > .gitignore 
git add . 
git commit -m "Adding test1.txt and gitignore" 

mkdir b 
cd b 
git init 
touch test2.txt 
git add . 
git commit -m "Adding test2.txt" 

git log 
cd .. 
git log 
+0

Điều này có lẽ nên được di chuyển sang [SoftwareEngineering.SE] (https://softwareengineering.stackexchange.com/) –

Trả lời

15

Các git mẹ (của submodules) sẽ theo dõi các chi nhánh và ID thẻ của submodules khi bạn cam kết. Điều đó sẽ đảm bảo rằng khi bạn kiểm tra cha mẹ (tại một phiên bản đã biết) thì các mô-đun con cũng sẽ chứa các thẻ bên phải của chúng.

Nếu, như trên, nó chỉ xảy ra là thư mục con bị bỏ qua, về cơ bản đây là hai repo git độc lập, như thể chúng không phải là một phần của hệ thống phân cấp hệ thống tệp.

+2

Đây chính xác là điểm khác biệt chính: sử dụng các mô-đun con bạn có một đối tượng được phiên bản trong kho lưu trữ gốc đại diện cho mô-đun con. Các kho con được lồng ghép (và bỏ qua) không có đại diện nào trong repo chính. –

+0

Xin chào, tôi đang gặp sự cố khi hiểu điều này: giả sử repo hoạt động là A và repo submodule là b. Bạn có nghĩa là b theo dõi các thay đổi được thực hiện cho mã của nó trong A? Bạn có thể vui lòng cung cấp một ví dụ? –

+0

@adityamenon Tôi đã xem nó như là một cách có tổ chức của việc có thể làm 'git submodule foreach git pull' mà không nhớ" submodules "của tôi ở đâu. – JRomero

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