| @技術/プログラミング
会社で使ってる GitHub のプライベートリポジトリで master ブランチに対して出てる Pull Request を Merge したらコードが消えるという珍事があった。ファイルを削除す...

会社で使ってる GitHub のプライベートリポジトリで master ブランチに対して出てる Pull Request を Merge したらコードが消えるという珍事があった。ファイルを削除する commit とかないにもかかわらず、全消しされてしまった。ちなみに同じ Merge を手もとでやるとコードが消えたりはせずちゃんと Merge された。極めて謎な現象だった。

master ブランチが空になるとデプロイができなくなって不都合があるので( Webistrano 上でデプロイするとき master ブランチからしかデプロイできないようなレシピになってる)、コードが消滅したブランチを bukkowaremaster にリネームして手もとで Merge したブランチを force push してしのいだ。

GitHub に問い合わせてみたところ、ぬるい感じの一次返信が来たので原因教えて欲しいと送った。すると今度は別の人( Jeff King という人物)から返事が来た。名前でググったら git のコミッターだった。どうやら大事みたいだ。

We are still tracking down the exact cause of the problem you experienced, but we believe it is related to an unchecked error condition in git that triggers only occasionally (it does not reproduce reliably on your repository, and over all of our repositories over the past few years, yours is only the second instance we have seen).

In the meantime, we've put additional checks into the merge process to sanity-check the result. This should help us narrow down the root cause, but more importantly, it will prevent such a bogus merge from being presented to the user (we will catch the error and retry it).

I hope that addresses your concern.


(以下拙訳)

引き続き問題の原因を調査してるけど、これは git の unchecked error condition に起因する問題だと思っています。(再びあなたのリポジトリで同じ問題が起こることはないはずです。ここ数年間でこの問題に遭遇したのは GitHub の全リポジトリでもあなたのケースが 2 例目です)

一方で、 Merge のプロセスにはもっと厳密なチェックを追加するようにしました。このことで問題の原因を絞り込むことができますし、さらに大事なことに、今回のような空の Merge をユーザーの目にさらすことがなくなります(問題があれば我々が事前に察知し、 Merge を再実行します)

この対応であなたの懸念を解消できるのではないかと思います。

unchecked error condition ってのが何なのかがよく分からなくて、軽くググってみたら例外キャッチできなくて死ぬ現象で、セキュリティ上の懸念事項っぽい( CWE - CWE-391: Unchecked Error Condition (2.5))。

「 Pull Request を Merge したらコードが消えました」と聞かされたときは、冗談か何かかなと思ったけど、見てみたら本当に消えててびっくりした( git なので手もとにも同じコードあるからそんなに不安な感じはしなかった)。

GitHub 、問い合わせたらちゃんとまともな感じの返信が返ってくるのでその点は評価できる。今回も git の中の人みたいな感じの人から返信来たし、すでに追加的なチェック処理を行うようにしたと書いてあって対応速かった。 GitHub が git の問題直せる人を雇ってるというの、いいと思う。 OSS を使ってる会社が OSS の問題を直せる人を雇ってると強いなぁと感じた。

GitHub には今年の春の時点で 600 万リポジトリくらいあるらしいから( Five years )、 600 万リポジトリの中で行われた Pull Request のすべての Merge の中で 2 例目のレアな経験をしたということになる。なのでこれ読んでる人が同じ現象に遭遇することはまずないと思うけど、こういうことがありましたよというお話でした。

この記事に似ている記事

  • Screenshot
    Lingr 、 lingr-irc + ZNC 経由で見てるんだけど、 5 分おきくらいに接続が切れて辛い感じだった。vim 界隈で有名な mattn さんがエラーにならないように改修してるぽかったので (Pull Request 出してある...
  • Bd5abb35faa37797ba4f11bf41e051a1
    前書いてた記事の続き。Kaizen Platform 時代は Naoya Ito さんの以下の記事にあるような感じで deploy してた。 Slack 上で hubot に話しかけると deploy 用の Pull Request が作られ...
  • CI やっていき December 20, 2018
    44571828740 37714f7723 h
    この記事は CircleCI Advent Calendar 2018 19 日目の記事ですが間に合わず一日遅れて書いております。すんません 🙇🏻CircleCI を使った Rails アプリのデプロイフローみたいな話を書こうかなと思ったので...
  • 34454066 f8bf06ec eda5 11e7 82ba 1c2a0961b6b8
    去年の年末に大掃除も年賀状もやらずに Rails に Pull Request を出してた。年末だけど大掃除もせず年賀状も書かず実家にも帰省せず rails/rails に Pull Request 出した。https://t.co/a0xe...
  • Screenshot
    AmazonからECS 3.0からECS 4.0へと移行するよう促すメールが届いた。We are writing to remind you that the Amazon E-Commerce Web Service 3.0 will be...
  • Bf14518c1c7011a6fb124d5baac6113b
    仕事面で 2017 年を振り返ると、いろいろやったけど自分でなんか作ったというのはほとんどない。 人のふんどしで相撲をとっていた一年(転職してからは半年強)だと言える。SaaS として提供されているツールを導入したり、 OSS の分析ツールを...

Comments


(Option)

(Option)