2012-05-17 8 views
10

Tôi có một repo riêng trên Github có 3 submodules, cả 3 đều là private.Vấn đề với mô-đun con git khi các mô-đun con là riêng tư Github repos

Tôi đã tạo 4 khóa SSH trên máy chủ EC2 và áp dụng chúng như Github triển khai khóa cho tất cả 4 kho lưu trữ riêng tư.

Tôi có thể sao chép kho lưu trữ chính vì nó nhận ra khóa SSH. Khi tôi chạy "git submodule update" nó không thành công trên repos riêng với các lỗi sau:

LRI: Không tìm thấy kho. gây tử vong: Kết thúc từ xa bị treo đột ngột

Nếu tôi tự kiểm tra các repos riêng tư đó, nhưng không phải khi sử dụng lệnh git submodule. Bất kỳ ý tưởng? Điều này có được hỗ trợ đầy đủ không?

Trả lời

9

xác thực của github hơi lạ. Họ không sử dụng tên người dùng; họ chỉ phỏng đoán dựa trên khóa công khai mà bạn đã giới thiệu bạn là ai. Vì bạn đã tạo ra bốn khóa triển khai, nên bất kỳ ai đoán được máy chủ nào sẽ được máy chủ của bạn sử dụng khi nó kết nối với github - github sẽ chấp nhận bất kỳ khóa nào, sau đó từ chối mọi quyền truy cập vào kho không có khóa đó.

Như vậy, giải pháp đơn giản nhất là chỉ sử dụng một khóa triển khai duy nhất cho tất cả các kho lưu trữ.

Nếu bạn không thể, tuy nhiên, bạn có thể hack xung quanh điều này bằng cách sử dụng bí danh máy chủ ssh. Thêm vào ~/.ssh/config đoạn thơ của máy chủ của bạn như sau:

Host repo-foo 
    HostName ssh.github.com 
    Port 443 
    User git 
    IdentityFile /path/to/my-ssh-key-file-for-foo 
    IdentitiesOnly yes 

Host repo-bar 
    HostName ssh.github.com 
    Port 443 
    User git 
    IdentityFile /path/to/my-ssh-key-file-for-bar 
    IdentitiesOnly yes 

Sau đó chỉ submodules tại repo-bar:username/bar.gitrepo-foo:username/foo.git hơn là sử dụng các hình thức [email protected]:....

Điều này có hiệu quả sẽ khiến git và ssh xử lý từng kho lưu trữ như đang sống trên một máy chủ khác và chuyển vào tệp nhận dạng rõ ràng, do đó không có nhầm lẫn về khóa nào cần sử dụng.

+1

Vâng tôi đã đoán được nhiều, tuy nhiên, triển khai khóa là duy nhất và tôi không thể đặt chúng trên nhiều dự án. Tôi sẽ thấy những gì khác tôi có thể làm, nhưng tôi chủ yếu chỉ muốn triển khai không có mật khẩu. –

+1

Đây không phải là lẻ; nó khá chuẩn! Và giải pháp chuẩn là chính xác như bạn đã đề xuất. – Ashe

+0

@Len, tiêu chuẩn như nó có thể được, nó khá kỳ quặc. github nên sửa chữa công cụ của họ để cho phép cùng một khóa triển khai được sử dụng trên nhiều repos :) – bdonlan