2013-02-04 28 views
6

Tôi sử dụng hệ thống điều khiển phiên bản git cho phần mềm của mình. Và "bên trong" mã nguồn, tôi sử dụng go get để tự động tìm nạp phần mềm từ github. Làm thế nào tôi có thể xử lý tình huống "git đôi"?git + go - cách xử lý các tiểu dự án với cách lấy

Khi tôi chạy git add trên thư mục src/github.com/somename/someproject, là một kho lưu trữ git trong chính nó, điều này sẽ thêm gì? (nó không giống như thế này khi tôi chạy git status)

Tôi có nên sử dụng git submodule cho các thư mục con thêm git get?

Thực tiễn tốt nhất trong tình huống này là gì?


Chỉnh sửa: Tôi có môi trường tùy chỉnh $GOPATH cho dự án phần mềm của mình. Đây là lý do tại sao thư mục src/github.com/somename/someproject được tìm thấy bên trong hệ thống phân cấp thư mục phần mềm của tôi.

+0

Càng suy nghĩ về điều đó, tôi càng muốn loại bỏ thư mục '.git' trong thư mục con' github.com/somename/someproject' đã đề cập. Bằng cách đó tôi chỉ đóng băng mã và đẩy nó vào kho lưu trữ chính của tôi. Ugly nhưng tôi đoán rằng hoạt động tốt. – topskip

+2

Hình như goven (https://github.com/kr/goven) làm điều đó. – topskip

Trả lời

3

Trong khi câu trả lời của @ nemo có lẽ là cách để đi, đây là những gì tôi đã làm: Tôi đã tước các tệp .git.gitignore từ các kho lưu trữ đã tải xuống go get. Đường dẫn nguồn mà tôi có nằm trong thư mục nguồn của tôi: GOPATH=.../myproject/src/go/. Bằng cách đó, tất cả các tải xuống go get đều nằm trong cây dự án của tôi và tôi có thể xử lý nó bằng git.

Tôi nghĩ rằng đây là những gì "goven" (xem bình luận của tôi về câu hỏi của tôi) là nghĩa vụ phải làm, nhưng tôi đã không thể làm cho nó hoạt động.

2

Nếu bạn muốn lưu trữ các phiên bản của gói nước ngoài bạn sử dụng, nó sẽ là tốt nhất nếu đi nhập cú pháp từ xa sẽ ủng hộ cái gì đó như github.com/user/project/sub/directory/revision, mà nó không may. Có một số discussion trên danh sách gửi thư của golang-nut về chủ đề này, hãy kiểm tra xem các giải pháp và thông báo có thể có hay không.

Cách đơn giản nhất để thực hiện việc này, có lẽ là chia rẽ các dự án bạn sử dụng và nhập dĩa của bạn, vì vậy bạn có toàn quyền kiểm soát các bản cập nhật. Nền tảng như github làm cho nó thực sự dễ dàng để làm như vậy.

Từ go help remote:

New tải về gói được ghi vào thư mục đầu tiên được liệt kê trong biến môi trường GOPATH (xem 'đi giúp đỡ gopath').

Vì vậy, giải pháp submodule đề xuất của bạn là có thể nhưng không dễ sử dụng, vì bạn phải chỉ định GOPATH tùy chỉnh trong khi tìm nạp. Tôi sẽ khuyên bạn nên forking các thư viện và tham khảo các ngã ba.

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