亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

去 mod replace 和 github forks of /vN repositories

去 mod replace 和 github forks of /vN repositories

Go
揚帆大魚 2022-08-30 14:45:23
我剛剛向 http://periph.io/x/devices/v3 發送了一個拉取請求;它已經被合并了,但是關于該過程的某些內容并不理想:首先,我克隆了存儲庫(它實際上是 http://github.com/periph/devices;模塊是命名的),所以我的分叉自動稱為 http://github.com/lutzky/devices。我想測試一段單獨的代碼,我正在使用修改后的庫,稱之為;將此添加到作品中:periph.io/x/devices/v3testclienttestclient/go.modreplace periph.io/x/devices/v3 v3.6.9 => ../devices但是,這也應該有效(如果拉取請求需要更長的時間才能被接受,這將很有用),并且不會:replace periph.io/x/devices/v3 v3.6.9 => github.com/lutzky/devices main這給出了這個錯誤:testclient/go.mod:15: replace github.com/lutzky/devices:  version "v0.0.0-20210508194004-cae0146d8900" invalid:  go.mod has post-v0 module path "periph.io/x/devices/v3" at revision cae0146d8900憑直覺,我想我會創建一個標簽,然后把它推到我的叉子上,然后把命令指向那個。這也行不通:v3.6.9-newfeaturereplacetestclient/go.mod:15: replace github.com/lutzky/devices:version "v3.6.9-newfeature" invalid:module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3所以我不能使用v0標簽,因為說它是,但我不能使用v3標簽,因為URL沒有。我不認為我應該在我的分叉存儲庫中修改(首先,這會使拉取請求變得愚蠢)。打算用什么方式來解決這個問題?go.modv3/v3go.mod
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

這是您正在尋找的修復程序,我測試了以下文件,它可以正常工作,go.mod


module test


go 1.14


replace periph.io/x/devices/v3 => github.com/lutzky/devices/v3 v3.6.9-newfeature


require (

    periph.io/x/devices/v3 v3.6.9 // indirect

)


我首先安裝,periph.io/x/devices/v3

go get periph.io/x/devices/v3


然后我在 ,


格式中插入了替換:go.modreplace periph.io/x/devices/v3 => github.com/lutzky/devices/v3 mainreplace <original_module> => <forked_repo> <branch>


然后我就跑了。之后,替換指令中的替換指令被交換,這是分叉存儲庫分支上的最新標記,從而為您提供了上面看到的內容。go getmainv3.6.9-newfeaturemain


查看完整回答
反對 回復 2022-08-30
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

多虧了 ramaraja-ramanujan@ 的回答和更多的調試,我找到了答案。


TL;DR - 正確答案是:


replace periph.io/x/devices/v3 v3.6.9 => github.com/lutzky/devices/v3 main

                                         // this part was missing ^^^

這將在構建時立即起作用,并且(或)將更改為特定標記。有幾個有趣的旁注:go mod tidygo getmain


Go 代理

標簽是我自己的;我創建它是為了讓它工作。我已經刪除了它,但不斷替換為 - 無論我清除了多少緩存!運行它原來是在聯系 http://proxy.golang.org。為了禁用此功能,我運行了.這用偽版本替換了該行。請注意,這與我的分叉中的當前提交相匹配,而我的分叉和原始存儲庫都沒有 - 它似乎是從現有提交開始并遞增的。v3.6.9-newfeaturego mod tidymainv3.6.9-newfeaturestracegoGOPROXY=direct go getv3.6.10-0.20210508194004-cae0146d8900mainv3.6.10v3.6.9


不是子目錄/v3

實際上,源存儲庫(https://github.com/periph/devices)沒有子目錄。我認為正在發生的事情是該域正在做一些詭計 - 確實要使用瀏覽器 http://periph.io/x/devices/v3 確實有效。但是,Go 的分辨率似乎在模塊路徑中采用 final,在這種情況下,不指示子目錄(但實際上是對標記名稱的限制)。這顯然是允許的,并且在 https://golang.org/ref/mod 中進行了討論,但它并不完全簡單。v3periph.io/v3


查看完整回答
反對 回復 2022-08-30
  • 2 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號