2012-05-02 36 views
6

(Chủ yếu là một câu hỏi Git, nhưng có thể có liên quan đến người sử dụng PyroCMS khác)không thể thêm git submodule vào kho

Tôi có một kho lưu trữ địa phương của PyroCMS - repo là một bản sao của một ngã ba github của dự án chính. Tôi cũng có một mô-đun PyroCMS, cũng là một bản sao cục bộ của một ngã ba github của rằng dự án.

Tôi đã đặt cả hai trong các thư mục riêng biệt.

~/Dropbox/websites/pyrocmscommunity-test/ 
~/Dropbox/github/PyroDatabase/ 

Tôi muốn thêm PyroDatabase như một submodule của pyrocmscommunity-kiểm tra, vì vậy tôi có thể kéo cập nhật từ github, theo dõi các thay đổi của riêng tôi, vv

tôi đã cố gắng để làm điều này bằng cách vào phía trên cùng của cây làm việc và thực hiện:

git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 

nhưng nó đã không hoàn thành đúng:

Cloning into 'addons/shared_addons/modules/database'... 
ssh_exchange_identification: Connection closed by remote host 
fatal: The remote end hung up unexpectedly 

Tôi không hiểu điều này vì tôi không chỉ định kết nối SSH, tôi chỉ muốn sử dụng repo cục bộ. Nó đang cố gắng kết nối và tại sao?

Ngoài ra, bây giờ, bất cứ khi nào tôi lặp lại các lệnh, tôi có được điều này:

'addons/shared_addons/modules' already exists in the index 

Nhưng tôi không hiểu điều này như không có .gitmodules tập tin và không đề cập đến các tập tin module trong .gitconfig một trong hai.

Tôi đang làm gì sai và cách đặt lại mọi thứ?

Cảm ơn, William

+0

Lạ. Làm việc cho tôi. Tôi cũng đã cố gắng nhân bản một kho lưu trữ cục bộ không đồng bộ với kho lưu trữ github từ xa, có khả năng nhân bản cục bộ sẽ kết nối với điều khiển từ xa của nó ... nhưng điều đó cũng làm việc. – GoZoner

Trả lời

15

Khi xác định URL tương đối cho vị trí submodule, Git mất nó tương đối đến (ở đây Github) URL origin của projet hiện tại, và không tương đối với vị trí dự án trên hệ thống tập tin. Điều này là do một môđun con là một con trỏ vĩnh viễn đến một vị trí từ xa. Ở đây Git cố gắng liên hệ với kho lưu trữ github gốc với hai cấp độ lên, đó là một URL không chính xác.

Đối với lỗi thứ hai Git đã tạo ra một mục trong khu vực dàn chỉ số của bạn, và nó phải được loại bỏ (unstaged) với

git rm -r addons/shared_addons/modules 

Sau đó thử lại với đường dẫn tuyệt đối để clone của bạn:

git submodule add $HOME/Dropbox/github/PyroDatabase/ addons/shared_addons/modules/ 

Dù sao việc thêm bản sao cục bộ của dự án của bạn dưới dạng mô-đun con của chính nó là lạ, vì các mô đun phụ có nghĩa là một repo khác của dự án có chứa. Tại sao không theo dõi các cam kết địa phương và nguồn gốc trong thời trang Git tiêu chuẩn?

+1

+1 để đọc toàn bộ đoạn văn từ tài liệu trên git submodule add. – djs

+0

Cảm ơn - Tôi đã rõ hơn về điều đó ngay bây giờ. Cũng tìm thấy các submodules [chapter] (http://git-scm.com/book/en/Git-Tools-Submodules) trong Git Book có ích. –

2

Phiên bản nào của git bạn đang chạy? Có thể bạn không thể chạy lại lệnh vì cấu trúc thư mục bạn đã chỉ định đã được tổ chức. Bạn có thể đặt điều như thế này (phải cẩn thận với lệnh này):

$ git status # check what has been changed 
$ git reset --hard HEAD # destroy all working copy changes 

Một cách thực sự hữu ích để gỡ lỗi những gì đang xảy ra với git là để thiết lập GIT_TRACE=1. Vì vậy, hãy thử chạy lệnh một lần nữa khi bạn đã dọn dẹp như thế này:

$ GIT_TRACE=1 git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 
Các vấn đề liên quan