2016-07-17 10 views
2

私は、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つシャスを持っabと仮定すると、私はこのような何かをするだろう:

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

いいえ、できません。

Compare APIを使用すると、2つのコミット間の差分を取得できます。このコミットには、注目しているファイルだけでなく、すべてのファイルが含まれます。だから、あなたのためにいくつかのフィルタリングをする必要があります。

もう1つのアプローチは、コミットXでコミットYでファイルの内容を取得し、最後にこれらの2つのバージョンのファイル間の差分を計算することです(一般的なdiffのためのGitHub APIはありません)。 Contents APIを使用して、生のバージョンのファイルをフェッチすることができます。とにかく

https://developer.github.com/v3/repos/contents/#get-contents

+0

私は私がしたいファイルを取得するので、私は(コミットごとに)それをフィルタリングする必要があり、私はそれはそうフィルタリングを行う必要があります、それを取ります。または、特定のファイルのすべてのコミットを取得し、同じコミットでそのファイルの2つのバージョンを比較することを提案していますか? – marcamillion

+0

@marcamillion Ivan Zuzakは、2つのコミットの間に1つのファイルの差分を取得するには、GH Contents APIを使い、アプリケーション内でdiffを生成する方がよいと同意します。 – Leon

+0

@marcamillion特定のコミットでファイルのバージョンを取得できます。したがって、2つのコミット(XとY)の間で特定のファイルの差分を取得する場合は、コミットX(API要求1)でファイルのバージョンを取得し、次にコミットYのバージョン(API要求2 )、そして最後に2つのバージョンをローカルで比較してください。ここではフィルタリングは必要ありません。あなたは最後にdiffを実行するだけです。提案されている2つのアプローチを比較すると、必要のないデータをフィルタリングする必要があり、もう1つでは差分を計算する必要があります。 –

関連する問題