突然、git pushができなくなってGitLabのリモートリポジトリにアクセスでき亡くなってしまいました。エラーメッセージは次の通りです。
error: RPC failed; curl 56 HTTP/2 stream 5 was reset
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
おそらくHTTPでアクセスしないでSSHですればいいのですけど、GitLabの設定が面倒なのでやっていません。
次に以下のサイトにしたがって、http.postBufferの値を大きくしてみます。
次のコマンドを実行してみます。
git config --global http.postBuffer 524288000
結果は変わりません。
GitLabはQNAPのContainer Stationを使ってDockerのコンテナにしていますので、docker-composeのYMLファイルにgit_max_sizeとgit_timeoutを追加しました。
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.and-works.com'
gitlab_rails['gitlab_shell_ssh_port'] = 2022
gitlab_rails['lfs_enabled'] = true
gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/lfs-objects"
gitlab_rails['time_zone'] = 'Asia/Tokyo'
gitlab_rails['git_max_size'] = 524288000
gitlab_rails['git_timeout'] = 300
参考にしたのは、いろいろ辿り着いたこちらのサイトです。
最初、コンテナを再起動しただけではだめでした。一度GitLabのコンテナを削除してから起動しないとgit pushができませんでした。
しかし、QNAPのContainer Stationは、コンテナを削除すると、docker-composeのYMLファイルの設定から何やかんやらすべて削除してくれますので、最小限docker-composeのYMLファイルのバックアップを取っておきましょう。私は、docker-composeのYMLファイルをGitで管理していましたので大丈夫でした。
QNAPのContainer Stationで、最初からdocker-composeのYMLを挿入してアプリケーションを作成し直しました
以上で、無事にgit pushができるようになりました。本当ならsshでリモートリポジトリをアクセスできるようにすれば、このような設定の必要はないかと思います。
ただし、設定しておかしいのは、以下のようなアイコンが表示されるようになって、ボタングレーになってしまったことです。
起動、停止、再起動はチェックボックスを選択して上のボタンでできますが、docker-composeのYMLを編集できないの難点です。いろいろ情報を漁っていますが、なかなか解決方法は見つかりません。
追記(2023年7月20日)
今度は別のリポジトリで次のようなエラーがSourceTreeで出て、何もリポジトリの中を参照できなくなってしまいました。
git status fatal: not a git repository (or any of the parent directories): .git
さて、どうしましょう。これはリモートリポジトリの問題ではなくて、ローカルのリポジトリの問題のようです。
仕方ないので、とりあえず再度リモートリポジトリからCloneしてみます。Pushしていないファイルもありますので、トラブルのあるリポジトリは名前を変えて残しておきます。
結果としては、このとりあえずのCloneした対応がよかったようです。Cloneしたら元に戻りました。リポジトリの内容も参照できます。そして、Pushできなかったリモートリポジトリも元通りに正常になりました。どうしてか、よくわかりません。