[精讚] [會員登入]
129

[GITLAB] 解決git使用http/https clone或pull時在大小達1G時的斷線問題

git clone大專案時出現RPC failed; curl 18 transfer closed with outstanding read data remaining的錯誤,如何解決?

分享此文連結 //n.sfs.tw/16335

分享連結 [GITLAB] 解決git使用http/https clone或pull時在大小達1G時的斷線問題@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2024-01-21 12:01:05 最後編修
2024-01-21 03:08:45 By 張○○
 

事情是這樣的,我建了一個gitlab,平時就把寫的程式丟上去。

今天有一個移機的需求,這個專案很大,大約有10G的大小。

每當我在git pull 或是 clone 這個專案的時候,就出現了錯誤,如下面的橘色文字

# git pull http://example.com/myname/project.git
Username for 'http://example.com': myname
Password for 'http://myname@example.com':<打入密碼>
remote: Enumerating objects: 89044, done.
remote: Counting objects: 100% (632/632), done.
remote: Compressing objects: 100% (631/631), done.
Receiving objects:  5% (5245/89044), 0.60 GiB | 10.08 MiB/s  <== 這個會一直跳動直到出錯
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
error: 2803 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

當我試著去搜尋這個錯誤的解決方法時我得到以下的建議[1][2][3[4]]

git config --global http.postBuffer 524288000

git config --global http.version HTTP/1.1

git clone repo_url --depth 1

git fetch --unshallow

git config --global core.compression 0

echo 1 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal

export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
git config --global pack.window "0"

以上指令都是沒效的,浪費了不少時間,最後還得把設定清掉並重開機:

查看設定

$ git config --global -l

移除單一設定

$ git config --global --unset pack.threads

移除群組設定

$ git config --global --remove-section pack

或直接編輯設定檔,這個檔在git 的根目錄上。

$ vi .gitconfig

 

經過幾次嘗試,我發現這個錯誤總是發生在接收大小約為1G的時候出錯,於是我想錯誤的原因會不會是出現在 gitlab 身上而不是我的伺服器本身?

其實這個問題以前也有出現過一次,那時急於下載駝鳥的解決方法就是改用 ssh,只是他很麻煩得上傳公鑰。這次想真正的解決問題。

於是開始搜尋有關 gitlab 1G的限制設定問題,就找到官網有一個表格[5]:

裡面有一個參數 Maximum site size 1 GB ,而且下面還有加註 The maximum size of your Pages site depends on the maximum artifact size, which is part of GitLab CI/CD.

似乎這就是我的目標:要修改這個參數,網路上沒有找到修改的方法,只能看官網的說明去修改這個參數上 Artifacts maximum size (compressed)

調整了全域和專案中的 Artifacts maximum size 都改成30G結果還是一樣,在下載到 1G 時就斷線。

這其間還研究了 GITLAB本身看有沒有隱藏的設定,無果。

經過我多次嘗式,後來我在

Admin Area-> Settings -> CI/CD -> Package file size limits

中找到下面欄位,把他改成約3G大小,再重試

Maximum Terraform Module package file size in bytes

Generic package file size in bytes

<沒有填,但是不確定是不是本來就沒有還是不小心刪了?>

本來想說填個3g看會不在3g的地方停止,沒想到重試竟然就成功了:

remote: Enumerating objects: 89044, done.
remote: Counting objects: 100% (632/632), done.
remote: Compressing objects: 100% (631/631), done.
remote: Total 89044 (delta 3), reused 609 (delta 1), pack-reused 88412
Receiving objects: 100% (89044/89044), 10.83 GiB | 10.65 MiB/s, done.
Resolving deltas: 100% (26302/26302), done.
From http://example/yourname/project
 * branch                HEAD       -> FETCH_HEAD
Updating files: 100% (64660/64660), done.

我的確不能理解為什麼設成3 G竟然能傳超過3G的大小?

可能和上面的Artifacts maximum size 也有關係,這次就懶得做實驗了。

ps:網頁上修改 gitlab 參數不必重啟 gitlab。

 

參考資料

[1] https://blog.csdn.net/yihuajack/article/details/103650588

[2] https://stackoverflow.com/questions/48200429/not-able-to-clone-large-repo-code-on-git

[3] https://stackoverflow.com/questions/26286155/pull-large-repository-more-than-1gb-size-over-http-fail

[4] https://confluence.atlassian.com/bitbucketserverkb/git-clone-fails-fatal-the-remote-end-hung-up-unexpectedly-fatal-early-eof-fatal-index-pack-failed-779171803.html

[5] https://docs.gitlab.com/ee/user/gitlab_com/

 

 

END

你可能感興趣的文章

鍵盤上特殊符號及按鍵的英文及中文讀法 鍵盤上特殊符號及按鍵的英文及中文要怎麼讀?

中國台灣香港澳門各省市英文代碼 中台港澳英文代碼一覽表

網頁的結構化--為網頁加入自己的搜尋 網頁有原生的搜尋引擎,想把這個引擎交給搜尋引擎顯示。

WD硬碟保固查詢及送修 送修壞掉的WD硬碟,這篇是過程記錄

[Firefox] 使用Firefox一次將頁面所有圖檔下載 使用Firefox一次將頁面所有圖檔下載的3個方法

「許功蓋」的字以及源由 有玩過電腦一段時間的人,都聽過這個人(有一天我才發現7年級的竟然都不認識這個

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。

好用的3+2碼郵遞區號查詢系統推薦 網路上找到用地址輸入判斷3+2碼郵遞區號的辨識率不高,除了這個網站…

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

[大型機台] 熱血高校躲避球 多少少年時光歲月耗在這個遊戲上,二十幾年前的那個時光,唯一想做的事就是把吃飯錢省下來拿去打一場五塊錢的電動,就算是沒錢也