私は、SHAとそのすてきなものと一緒に、APIを介してファイルのコミットを取得する方法を知っています。GH APIを使用して、2つのコミット間で1つのファイルのdiffデータを取得できますか?
しかし、1回のコミットでファイルの差分を、または2回のコミットで同じファイルの差分を求めたいとします。
例えば、this commitでは、activerecord/lib/active_record/associations.rb
には, :counter_sql
がほしいと言っていました。
どのようにしてdiffデータをAPI経由で取得できますか?
私はOctokit.rbを使用しています。
編集1
per this blog post可能ですが、私はちょうどOctokitでそれを行う方法を確認していないようです。
編集2
だから、私はちょっと少しずつそれを考え出すています。
2つのコミット間でdiffデータを取得するには、two commits like thisを比較できます。
だから、私は2つの変数の両方のコミットのための2つシャスを持っa
とb
と仮定すると、私はこのような何かをするだろう:
client = Octokit::Client.new(access_token: ENV["MY_ACCESS_TOKEN"])
comparison = client.compare("rails/rails", a, b, path: "activerecord/lib/active_record/associations.rb")
この問題は、両方のコミットの間、これは、差分につながるということです他の多くのファイルの変更や、私が望まない多くの情報が含まれています。
私が望むのは、これらの2つのコミットでこの特定のファイルからの差分です。
私はまだそれを行う方法を考え出していません。
思考?
私は私がしたいファイルを取得するので、私は(コミットごとに)それをフィルタリングする必要があり、私はそれはそうフィルタリングを行う必要があります、それを取ります。または、特定のファイルのすべてのコミットを取得し、同じコミットでそのファイルの2つのバージョンを比較することを提案していますか? – marcamillion
@marcamillion Ivan Zuzakは、2つのコミットの間に1つのファイルの差分を取得するには、GH Contents APIを使い、アプリケーション内でdiffを生成する方がよいと同意します。 – Leon
@marcamillion特定のコミットでファイルのバージョンを取得できます。したがって、2つのコミット(XとY)の間で特定のファイルの差分を取得する場合は、コミットX(API要求1)でファイルのバージョンを取得し、次にコミットYのバージョン(API要求2 )、そして最後に2つのバージョンをローカルで比較してください。ここではフィルタリングは必要ありません。あなたは最後にdiffを実行するだけです。提案されている2つのアプローチを比較すると、必要のないデータをフィルタリングする必要があり、もう1つでは差分を計算する必要があります。 –