2011-09-16 15 views
11

Tôi có một kho lưu trữ git với một cây làm việc đính kèm mà tôi đang đẩy đến một repo trần trên một điều khiển từ xa. Kho lưu trữ bao gồm một mô-đun con.Làm cách nào để bắt đầu/cập nhật một mô-đun con git trong cây đang hoạt động sau khi chuyển sang một thư mục làm việc trống?

Vào cuối từ xa: Tôi kiểm tra repo đến một cây làm việc git checkout -f đã thiết lập GIT-DIRGIT-WORK-TREE env VAR.

Trong cây đang hoạt động, bây giờ tôi thấy tất cả các tệp được mong đợi và một thư mục trống cho mô-đun con ('MySubmodule').

sau đó tôi làm:

git submodule init 
git submodule update 

lỗi này với một thông điệp như:

working tree '../../workTree/' already exists 
Clone of '[email protected]:user/MySubmodule.git' into submodule path 'MySubmodule' failed 

Thư mục submodule trống đã bây giờ cũng 'biến mất' từ cây làm việc ...

Tôi không chắc chắn nơi tôi đang đi sai với điều này, về cơ bản tôi chỉ muốn kiểm tra các tập tin submodule như tôi sẽ với 'git submodule cập nhật'.

+0

Bạn đã bao giờ giải quyết vấn đề này chưa? Nếu vậy tôi sẽ rất vui khi biết làm thế nào – shevron

+0

một repo trần không phải là nghĩa vụ phải có một cây làm việc và do đó không nên có một cây làm việc cho một submodule. [tương tự thông tin] (http://stackoverflow.com/questions/1764380/push-to-non-bare-repository#comment29366144_1764380) –

+0

Tôi đã có cùng một vấn đề khi viết một kịch bản triển khai, có vẻ như không có cách nào để khởi tạo submodules trong một kho trống đã được kiểm tra. –

Trả lời

0

Trước hết, tại sao bạn cần phải thanh toán kho hàng không? Chỉ cần sao chép nó ở một nơi khác và làm việc với một repo bình thường, không trần.

Nhưng nếu bạn thực sự cần phải làm điều đó, bạn có thể đổi tên thư mục để .git, thay đổi bare = true-bare = false trong .git/config và sau đó làm git checkout.

+3

Tôi sử dụng một repo trần vì những lý do được mô tả ở đây: http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html Tất cả các chức năng repo trần hoạt động tốt ngoài từ kiểm tra submodule đến cây làm việc tách rời. – arlogb

1

Có vẻ như khi bạn đang chạy "git submodule update", bạn không thể đặt GIT_WORK_TREE ... nó sẽ cố gắng sử dụng nó làm cây làm việc cho mô-đun con, không phải cho dự án siêu.

Tôi đã có để cập nhật máy chủ sau kịch bản cập nhật của tôi ...

/usr/local/bin/git --git-dir="$PROJECT_DIR" --work-tree="$PROJECT_DEMO" checkout -f; 

cd "$PROJECT_DEMO"; 
/usr/local/bin/git --git-dir="$PROJECT_DIR" submodule update --init --recursive; 

Thông báo tôi đã không được thiết lập biến môi, và rằng lệnh submodule không có "--work cây "thiết lập ... có vẻ như nó cần phải làm việc từ cwd.

+7

Điều này không hoạt động. từ xa: gây tử vong:/usr/libexec/git-core/git-submodule không thể được sử dụng mà không có cây làm việc. – berkus

+0

Thêm '--work-tree =" $ PROJECT_DEMO "' làm việc cho tôi. – DisgruntledGoat

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