2017-06-28 20 views
6

Tôi đang làm việc trên một dự án Go sử dụng Glide để quản lý phụ thuộc. Tôi cần phải thực hiện các thay đổi đối với dự án, nhưng cũng với một số phụ thuộc được sử dụng bởi dự án. Tôi cần phải kiểm tra những thay đổi này với nhau, trước khi cam kết thay đổi cho từng dự án một cách riêng biệt.Làm thế nào để sử dụng phiên bản địa phương của phụ thuộc trượt?

Làm cách nào tôi có thể yêu cầu Glide (hoặc Go) sử dụng các phiên bản cục bộ của các dự án này (ví dụ: tìm thấy trong $GOPATH/src/...) thay vì kéo xuống một thứ gì đó và nhồi vào thư mục vendor)?

Để đưa ra một ví dụ:

  • github.com/hyperledger/burrow phụ thuộc vào:
  • github.com/tendermint/tendermint, mà phụ thuộc vào:
  • github.com/tendermint/go-crypto

tôi cần phải thực hiện một số thay đổi bao trùm tất cả ba dự án. Tôi muốn kiểm tra các thay đổi bằng cách thực hiện mọi thứ trong dự án burrow, nhưng tôi cần nó để thực thi các phiên bản phát triển của mình là tendermintgo-crypto mà tôi có tại địa phương.

Trả lời

6

Nếu bạn muốn kiểm tra các phụ thuộc dưới '$ GOPATH/src/...' chỉ cần xóa vĩnh viễn mọi tệp lướt trong thư mục gốc của dự án của bạn (glide.yaml, glide.lock, v.v ...). Sau đó, bạn có thể đặt lại các tệp đó nếu bạn cần sử dụng lại các phụ thuộc 'nhà cung cấp'.

Cập nhật 1

tôi đang tìm kiếm các giải pháp tương tự cho các dự án của tôi sau đó tôi phát hiện ra rằng tài liệu hướng dẫn trượt xác định một tham số hữu ích thêm vào glide.yaml cho hàng nhập khẩu. Theo the official documentation:

repo: Nếu tên gói không phải là vị trí repo hoặc đây là một kho lưu trữ tin nó có thể đi đây. Gói cước sẽ được kiểm tra từ repo và đặt tên gói chỉ định. Điều này cho phép sử dụng dĩa.

Trong trường hợp đó bạn chỉ cần đẩy mã của bạn ở đâu đó (GitHub hoặc Gitlab cho Repos tin của bạn $ GOPATH/src/github.com/hyperledger/hang tôi đoán) sau đó chỉnh sửa glide.yaml của bạn:

- package: github.com/tendermint/tendermint <-- vendor name dependencies 
    repo: github.com/myrepo/tendermint <-- your remote fork 
    version: vx.x.x or your sha commit code 

Bằng cách này, bạn có thể chuyển từ phiên bản chính thức sang ngã ba và thực hiện các bài kiểm tra của mình. Để quay trở lại phiên bản chính thức của bạn chỉ cần loại bỏ hoặc nhận xét repo và phiên bản thuộc tính:

- package: github.com/tendermint/tendermint <-- vendor name dependencies 
# repo: github.com/myrepo/tendermint <-- your remote fork 
# version: vx.x.x or your sha commit code 

Tôi đang thử nghiệm dĩa của tôi theo cách này bây giờ và bạn không cần phải thay đổi con đường nhập khẩu của bạn vào mã của bạn, hy vọng điều này có ích.

Cập nhật 2

Một cách hữu ích là sử dụng glide mirror:

Gương cung cấp khả năng để thay thế một vị trí repo với một vị trí đó là một tấm gương của bản gốc. Điều này rất hữu ích khi bạn muốn có bộ nhớ cache cho hệ thống tích hợp liên tục (CI) hoặc nếu bạn muốn làm việc phụ thuộc vào một vị trí cục bộ.

Tôi đoán đây là một trong những giải pháp tốt nhất, ví dụ, vào loại dòng lệnh:

$ glide mirror set github.com/tendermint/tendermint file:///User/yourname/Gospace/src/github.com/tendermint/tendermint 

này sẽ tạo ra một mirror.yaml trong GLIDE_HOME của bạn (nếu không tồn tại sau đó sẽ được đặt dưới sự của bạn $ USER/.glide thư mục). Bây giờ bạn có thể kiểm tra phiên bản địa phương của bạn (dưới GOPATH) mà không cần ngã ba dự án của bạn (như tôi đã viết ở trên). Khi bạn đã hoàn thành các bài kiểm tra của bạn chỉ cần loại bỏ nó:

$ glide mirror remove github.com/tendermint/tendermint 
+0

Tôi cần sử dụng kết hợp các phụ thuộc của nhà cung cấp và phiên bản địa phương. Tôi đoán một con đường hacky là để loại bỏ các thư mục được lựa chọn theo 'nhà cung cấp/...' nhưng tôi muốn xem nếu có một cách tốt hơn/chính thức để làm điều đó. –

+0

điều này là chính xác. xóa khỏi 'vendor' các gói mà bạn phụ thuộc và hiện đang muốn làm việc. tránh các liên kết tượng trưng, ​​dựa vào chiến lược nội bộ để giải quyết sự phụ thuộc. –

4

Do Go vendoring là lần đầu tiên nhìn lên gói trong thư mục gốc dự án của bạn /vendor thư mục và khi không tìm thấy sau đó trong GOPATH và Glide cài đặt phụ thuộc của mình vào /vendor thư mục có nghĩa là bạn chỉ có thể thiết lập dự án của mình với glide install, sau đó xóa thủ công các phụ thuộc đã được sửa đổi cục bộ (hoặc bạn sẽ sửa đổi) trong cài đặt cục bộ của họ từ thư mục /vendor của dự án của bạn và các phiên bản được tìm thấy dưới GOPATH.

Khi bạn đã thử nghiệm mọi thứ, trước tiên bạn phải cam kết tất cả các phụ thuộc đã sửa đổi và sau đó quay lại dự án và sửa đổi tệp glide.yaml để sử dụng phiên bản mới của những phụ thuộc này.

Điều này sẽ hiệu quả.

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