2017-02-20 4 views

Antwort

1

Zuerst müssen Sie abrufen, um den Status der Remote-Tracking-Zweige zu erhalten. Es gibt keine andere Möglichkeit zu überprüfen, ob Ihre Niederlassung auf der Fernbedienung aktualisiert wurde. Viele Tools holen sich automatisch periodisch (wie alle 10 Minuten) zu diesem Zweck.

Dann vergleichen Sie Ihren lokalen Zweig mit seinem Upstream. Eine Möglichkeit, dies mit libgit2 zu tun, ist die Verwendung der revwalk-Funktionalität. Wenn Sie git_revwalk_push_ref den Upstream und git_revwalk_hide_ref den lokalen Zweig dann über den Bereich gehen, können Sie zählen, wie viele Commits hinter Ihrem lokalen Zweig ist. Tun Sie das Gegenteil, um die Anzahl der Commits zu erhalten.

Beispiel:

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

Okay, aber zum Beispiel git_revwalk_push_ref Funktion besitzt zwei Parameter: 1, git_revwalk * zu Fuß ||||| 2, const char * refname ||||| was soll ich als refname übergeben? –

+0

Ich habe die Daten bereits abgerufen und ich brauche ein Äquivalent davon in libgit2: git diff

+0

Ich habe ein Beispiel hinzugefügt. –

Verwandte Themen