1
최신 버전의 프로그램이 있는지 확인하고 싶습니다. 나는 내 프로그램을 bitbucket.org와 공유하고 있으며 최신 버전을 가져와야하거나 이미 최신 버전을 가지고 있다면 내 C++ 코드가 나를 쓰길 원합니다.C++에서 libgit2를 사용하여 pull이 필요한지 어떻게 확인할 수 있습니까?
최신 버전의 프로그램이 있는지 확인하고 싶습니다. 나는 내 프로그램을 bitbucket.org와 공유하고 있으며 최신 버전을 가져와야하거나 이미 최신 버전을 가지고 있다면 내 C++ 코드가 나를 쓰길 원합니다.C++에서 libgit2를 사용하여 pull이 필요한지 어떻게 확인할 수 있습니까?
먼저 원격 추적 분기의 상태를 가져 오기 위해 가져와야합니다. 지점이 원격에서 업데이트되었는지 확인하는 다른 방법은 없습니다. 많은 도구가 자동으로 주기적으로 가져옵니다 (매 10 분마다).
그런 다음 로컬 지점을 업스트림과 비교하십시오. libgit2를 사용하여이를 수행하는 한 가지 방법은 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 두 파라미터 가지고 1 git_revwalk *이 도보 ||||| 2, const char * refname ||||| refname으로 무엇을 전달해야합니까? –
나는 이미 데이터를 가져 왔고 libgit2에서 이에 상응하는 것이 필요하다 : git diff –
예제를 추가했다. –