rust的私有代碼倉庫

背景

公司內部要使用或推廣必需要知足私有性和保密性,公司內部的代碼是不能夠公開到公網上的。rust的公開代碼倉庫是crates.io,那麼私有倉庫的解決方案是什麼?咱們一塊兒來探索一下。html

國外網站reddit有人發出了對私有倉庫的需求並提問到:git

Private "crates.io"
Hi,
I'm trying to advocate for Rust in my company, and one of the needs will be to have our own "crates.io" so our (closed source) crates can be managed by cargo.
Is there a way to do that appart from specifying git urls?

另外,這位程序員還不想經過git來管理倉庫,由於他的公司不用git。程序員

withoutboats大牛的解決方案來了!2017年10月,他說道:

本週,cargo得到了一個新功能!如今您能夠從其餘倉庫下載依賴包也能夠從ractes.io下載的依賴包。這是重要的一步,使組織可以經過cargo分發其內部代碼庫,而無需將這些內部代碼庫上傳到公共倉庫。app

此功能將僅在夜間可用,並用alternative-registries這個feature gate來進行封閉。自1.0版本以來,咱們已經使用feature gate 迭代rustc中新的不穩定的特性,但這是咱們第一次在Cargo中使用feature gate。網站

這裏我解釋一下此段話。由於rust的發佈版本是頗有節奏的,按每六週一個版本的節奏分爲nightly、beta、stable三種版本。rust還在發展階段,版本迭代節奏快,開發團隊想要快速發新功能並在外部快速獲得驗證,每一個在開發的功能都會發布在nightly版本。nightly版本是不穩定的,發佈後再過六週就會自動變爲beta版本(期間會修改bug)。beta版本再過六週就會成功穩定版本。節奏圖以下:
nightly: * - - * - - * - - * - - * - - * - * - *
                     |                         |
beta:                * - - - - - - - - *       *
                                       |
stable:                                *

咱們繼續大牛的講述:url

自1.0以前起,cargo已與crate.io倉庫結合成一對。這個倉庫包含數千個crate,它們構成了rust的代庫庫生態系統的大部分,cargo使下載和使用crates.io中的代碼庫變得很是方便。
可是,有不少緣由使用戶可能不但願將其代碼庫上傳到cractes.io。特別是,專有代碼不適用於crates.io,crates.io容許任何人下載它包含的任何crate。所以,cargo老是支持其餘來源的倉庫。具體來講,它支持從文件路徑或Git倉庫中拉取依賴包。code

好了,也就是說可使用git倉庫來作私有倉庫。哈哈

另外一方面,到目前爲止,cargo只容許你一次依靠一個倉庫的crate。在許多狀況下,像crates.io這樣的倉庫比git更好,由於它們可以更有效地管理多個版本的crate,併爲您執行版本解析。使用這個新功能,您將可以從ractes.io之外的倉庫中拉取crate。htm

好了,並且這個功能出來後,對於同一個rust項目用戶能夠同時使用兩種上以的倉庫。

新手問題

跑第一個程序時,發如今國內拉取crate.io的依賴常常超時。能夠切換國內的中科大的源:
http://mirrors.ustc.edu.cn/he...ci

在 $HOME/.cargo/config 中添加以下內容: [source.crates-io] replace-with = 'ustc' [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index"
相關文章
相關標籤/搜索