2017-02-20 11 views

답변

1

먼저 원격 추적 분기의 상태를 가져 오기 위해 가져와야합니다. 지점이 원격에서 업데이트되었는지 확인하는 다른 방법은 없습니다. 많은 도구가 자동으로 주기적으로 가져옵니다 (매 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 
+0

좋아하지만, 예를 들어 기능 git_revwalk_push_ref 두 파라미터 가지고 1 git_revwalk *이 도보 ||||| 2, const char * refname ||||| refname으로 무엇을 전달해야합니까? –

+0

나는 이미 데이터를 가져 왔고 libgit2에서 이에 상응하는 것이 필요하다 : git diff

+0

예제를 추가했다. –