2013-07-25 16 views
6

Có thể tải xuống các mô-đun con cho một kho lưu trữ chỉ với thư mục hoạt động không?Tải xuống mô-đun con git cho tarball

Nếu tôi tải xuống một tarball của kho lưu trữ từ GitHub, tương đương với bản sao nông không có thư mục .git, bạn có thể "tải xuống" các mô-đun con vào thư mục hoạt động không?

Tôi đã thử git init && git submodule update --init, nhưng điều này không khởi tạo cũng như không cập nhật các mô-đun con. Tệp .gitmodules nằm trong thư mục hiện tại.

Cập nhật: Một số thông tin cơ bản về câu hỏi: Chúng tôi muốn sử dụng tarballs để kiểm tra kho lưu trữ tại Travis CI, nhưng một số người sử dụng git submodules. "Không sử dụng Git submodules" do đó sẽ không phải là một câu trả lời hay, nhưng câu trả lời cũng không thực sự là một thứ duy trì được. Tôi chỉ muốn một thư mục có mã kiểm tra ra và với submodules khởi tạo, không cần bất cứ điều gì cho phép tôi kéo xuống nhiều thay đổi sau này.

+0

Tại sao không phải là một 'cập nhật submodule git --init --recursive --force' được làm việc? Nó sẽ tải những submodules (nhưng với lịch sử đầy đủ của họ). Lưu ý rằng [git1.8.4 sẽ thêm một --depth cho bản sao submodule nông] (http://stackoverflow.com/a/17692710/6309). – VonC

+0

@VonC Nếu tôi biết. Lệnh đó không làm gì cả. Không có lỗi, nhưng nó trả về "ngay lập tức" mà không có bất kỳ đầu ra nào. – henrikhodne

+0

Nội dung của tệp '.gitmodules' của bạn là gì? Và bạn đang sử dụng phiên bản git nào? – VonC

Trả lời

2

Kết hợp một cách tiếp cận wget/tar, với một git init sẽ không giúp bạn khởi tạo các môđun con:

Mọi thứ đều untracked sau git init.

Bạn cần phải thêm và cam kết tất cả mọi thứ, trước:

git submodule update --init --recursive --force 

Đó git submodule lệnh sau đó sẽ "làm việc", nhưng tạo ra các thư mục chỉ có sản phẩm nào.
Đó là vì tệp tar không bao gồm special entries (160000) được tạo bởi một git submodule add.

Bạn cần phải khai báo lại những submodules:

C:\prog\git\ReactiveCocoa-2.0-development>git submodule add --name xcconfigs https://github.com/jspahrsummers/xcconfigs.git external\xcconfigs 
Cloning into 'external\xcconfigs'... 
remote: Counting objects: 312, done. 
remote: Compressing objects: 100% (229/229), done. 
Receal 312 (delta 87), reused 306 (delta 82) 
Receiving objects: 100% (312/312), 64.51 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (87/87), done. 
+0

Điều này vẫn không hiệu quả đối với tôi. Tôi đang sử dụng các lệnh tương tự như gist trong bình luận ở trên, với 'git add -A. && git commit -m "cam kết mọi thứ" ngay lập tức sau 'git init'. – henrikhodne

+0

@henrikhodne Tôi vừa chỉnh sửa câu trả lời của mình. – VonC

+0

Cảm ơn, có vẻ như chúng tôi phải phân tích cú pháp tệp '.gitmodules' và sau đó readd tất cả mọi thứ. Tôi đã hy vọng cho một cái gì đó hơi tự động hơn, nhưng tôi đoán nó sẽ làm việc. – henrikhodne

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