2017-06-08 2 views
1

Ich möchte alle Commits seit dem letzten Mal der Benutzer von ihrer Maschine geschoben sehen.libgit2sharp bekomme alle Commits seit dem letzten Push

using (var repo = new Repository(repositoryDirectory)) 
{ 
    var c = repo.Lookup<Commit>(shaHashOfCommit); 

    // Let's only consider the refs that lead to this commit... 
    var refs = repo.Refs.ReachableFrom(new []{c}); 

    //...and create a filter that will retrieve all the commits... 
    var cf = new CommitFilter 
    { 
     Since = refs,  // ...reachable from all those refs... 
     Until = c   // ...until this commit is met 
    }; 

    var cs = repo.Commits.QueryBy(cf); 

    foreach (var co in cs) 
    { 
     Console.WriteLine("{0}: {1}", co.Id.ToString(7), co.MessageShort); 
    }  
} 

Ich habe diesen Code aus einem anderen Beitrag, aber ich bin nicht sicher, wie es zu ändern, um die Commits seit dem Datum des letzten Stoßes zu bekommen.

Antwort

-1

Sie möchten die Commits, die von c erreichbar sind, mit Ausnahme derer, die vom Remote-Commit erreichbar sind.

Wenn Sie über master sprechen, wird der Tracking-Zweig in einer typischen Konfiguration remotes/origin/master sein. refs/remotes/origin/master wird aktualisiert, wenn Sie auf den entfernten Zweig master drücken.

So Ihre CommitFilter sollte folgendermaßen aussehen:

new CommitFilter { Since = repo.Refs["refs/remotes/origin/master"], Until = c } 

die zu git log refs/remotes/origin/master..c entspricht.

Verwandte Themen