1
最新バージョンのプログラムがあるかどうかを確認したい。私は自分のプログラムをbitbucket.orgに共有しています。最新のバージョンを入手する必要がある場合、または最新のバージョンを既に持っている場合は、私のC++コードで私に書き留めてください。C++でlibgit2を使用してpullが必要かどうかを確認する方法はありますか?
最新バージョンのプログラムがあるかどうかを確認したい。私は自分のプログラムをbitbucket.orgに共有しています。最新のバージョンを入手する必要がある場合、または最新のバージョンを既に持っている場合は、私のC++コードで私に書き留めてください。C++でlibgit2を使用してpullが必要かどうかを確認する方法はありますか?
まず、リモート追跡ブランチの状態を取得するためにフェッチする必要があります。ブランチがリモートで更新されているかどうかを確認する他の方法はありません。この目的のために、多くのツールが定期的に(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
わかりましたが、例えば、関数git_revwalk_push_ref 2つのパラメータがあります: 1、git_revwalk *散歩を||||| 2、const char * refname ||||| 私はrefnameとしてどのように渡す必要がありますか? –
私はすでにデータを取得しており、libgit2でこれと同等のものが必要です:git diff –
例を追加しました。 –