1. 程式人生 > >repo init出現錯誤fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle解決方法

repo init出現錯誤fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle解決方法

當執行 repo init -u https://android.googlesource.com/platform/manifest時出現如下錯誤: fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle fatal: error [Errno 101] Network is unreachable 原因是當repo init時,執行的repo是環境變數裡面預設的repo,這個repo只是單純一個幾百行的python指令碼,而不是完整的repo-project,所以要先去網路遠端sync完整的repo-project,因為repo也是開源專案,設計者出於維護和使用體驗,每次repo init的時候都要從遠端sync最新的版本。(瀏覽器上檢視https://gerrit.googlesource.com/git-repo/clone.bundle可以看到維護的history,需要翻牆) 在repo init時因為遠端的git server的域名gerrit.googlesource.com會被GFW擋掉,就會出現Network is unreachable的情況,運氣不好的時候可能一整天都沒辦法init成功。 可以按照以下兩個方法解決: 方法一:
在命令列增加: --repo-url=https://gerrit-google.tuna.tsinghua.edu.cn/git-repo,即:
$ repo init-u https://android.googlesource.com/platform/manifest --repo-url https://gerrit-google.tuna.tsinghua.edu.cn/git-repo
另外清華TUNA源還提供完整Android原始碼(AOSP),參考連結:https://mirrors.tuna.tsinghua.edu.cn 方法二: 通過分析repo指令碼,就會發現根據當前run的repo的路徑中是否有main.py和當前目錄的.git資訊,來判斷是否是完整的repo-project,如果不是就會觸發git clone去sync repo-project。那麼避開git clone 的方法就是run repo-project中的repo來init。 如果你曾經有init成功過,就會在當前的目錄下有一個.repo檔案,例如{PATH},引用那個{PATH}/.repo/repo/repo來init,那麼就不會去sync完整的repo-project了。 如果是首次repo init,就從
http://download.csdn.net/detail/xiaokeweng/8872981
下載完整的.repo檔案。
參考: http://blog.csdn.net/xiaokeweng/article/details/46743409