2012-02-27 29 views
7

Gần đây trong git 1.7.8, một sự thay đổi đã được giới thiệu để "xử lý" submodules khác biệt so với trước đây - https://lkml.org/lkml/2011/12/2/316Revert để pre-git hành vi v1.7.8 git submodule với các địa điểm hệ thống tập tin submodule

Khi Populating một submodule mới thư mục với "git submodule init", thư mục metainformation $ GIT_DIR cho các mô-đun con được tạo trong thư mục $ GIT_DIR/modules // của siêu trình chiếu và tham chiếu thông qua cơ chế gitfile. Điều này là để có thể chuyển đổi giữa các cam kết trong siêu dự án có và không có mô hình con trong cây mà không cần sao chép lại.

Vì vậy, bây giờ, thay vì nhân bản submodule vào thư mục chỉ định, thay vì một .git tập tin được tạo ra và bên trong nó là thế này:

$ cat .git 
gitdir: ../../../../.git/modules/app/src/emberlabs/openflame 

Vấn đề của tôi: Tôi đang trên git 1,7 .9, và tôi cần các tệp của môđun con nhân bản vô tính trong bản sao cục bộ của tôi chính xác nơi tôi mong đợi chúng, thay vì git dictates chúng nên - như là hành vi trước git 1.7.8, nơi tôi có thể sao chép submodule và tìm tất cả các tệp của bản cam kết nhân bản.

Mọi đề xuất hoặc ý tưởng về cách ... tốt, re -Có được điều này không?

Trả lời

8

Tìm thấy giải pháp cho việc này.

Việc chỉnh sửa file {$project_root}/.git/modules/{$submodule_path}/.git/config và loại bỏ các dòng worktree dưới [core], và sao chép toàn bộ thư mục .git từ {$project_root}/.git/modules/{$submodule_path}/ vào vị trí thực tế của submodule (sau khi xóa .gittập tin nơi submodule là) và sau đó chạy git checkout -f {$branch} dường đã kéo tất cả các tệp sao lưu. Không hoàn toàn chắc chắn rằng nó là một giải pháp đầy đủ tuy nhiên.

+0

Bạn đã bao giờ tìm thấy giải pháp dễ dàng hơn chưa? Tôi đang gặp sự cố tương tự và tôi đang sử dụng phiên bản GIT mới nhất. Tôi sẽ có thể dễ dàng sao chép như cũ-lần w/ra phải mess với tất cả điều này vô nghĩa. Tôi muốn submodules của tôi để sao chép trên như repos legit có thể được sửa đổi và đẩy. – swt83

+0

chỉnh sửa: rõ ràng là không, tôi loại bỏ bình luận của tôi – njzk2

+0

Tôi đã phải làm điều này để có được Gitbox để theo dõi submodule của tôi một cách chính xác. Làm việc hoàn hảo. – phatmann

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