2017-02-20 4 views

答えて

1

まず、リモート追跡ブランチの状態を取得するためにフェッチする必要があります。ブランチがリモートで更新されているかどうかを確認する他の方法はありません。この目的のために、多くのツールが定期的に(10分ごとなど)自動的にフェッチします。

次に、ローカルブランチを上流と比較してください。 libgit2でこれを行う1つの方法は、revwalkの機能を使用することです。アップストリームの場合はgit_revwalk_push_ref、ローカルブランチの場合はgit_revwalk_hide_refになります。範囲を超えた場合は、ローカルブランチの背後にあるコミット数をカウントできます。先にコミットの数を取得するには、逆を行います。

例:

git_revwalk *walker; 
git_revwalk_new(&walker, repo); 
git_revwalk_push_ref(walker, "refs/remotes/origin/master"); 
git_revwalk_hide_ref(walker, "refs/heads/master"); 

git_oid id; 
int count = 0; 
while (!git_revwalk_next(&id, walker)) 
    ++count; 

// 'count' is the difference between remote and local 
+0

わかりましたが、例えば、関数git_revwalk_push_ref 2つのパラメータがあります: 1、git_revwalk *散歩を||||| 2、const char * refname ||||| 私はrefnameとしてどのように渡す必要がありますか? –

+0

私はすでにデータを取得しており、libgit2でこれと同等のものが必要です:git diff

+0

例を追加しました。 –

関連する問題