public Models.Repository GetIncomingChanges(Models.Repository repository) { try { NGit.Api.Git git = NGit.Api.Git.Open(repository.Path); Repository repo = git.GetRepository(); repo.GetIndexFile(); //Repository repo = new FileRepository(new Sharpen.FilePath(path)); //NGit.Api.Git git = new NGit.Api.Git(repo); //TODO: Find out how git works really, and fix this. FetchCommand fc = git.Fetch(); FetchResult fr = fc.Call(); LogCommand lc = git.Log(); Iterable <RevCommit> lr = lc.Call(); if (git != null && repo != null && fr != null && lr != null) { List <Watchtower.Models.Changeset> commits = new List <Watchtower.Models.Changeset>(); foreach (RevCommit rc in lr) { //TODO: Find out if these values are right. Watchtower.Models.Changeset c = new Watchtower.Models.Changeset(rc.GetParent(0).GetHashCode().ToString(), rc.GetHashCode().ToString(), rc.GetCommitterIdent().GetEmailAddress(), rc.GetCommitterIdent().GetWhen(), rc.GetCommitterIdent().GetName(), rc.GetFullMessage()); commits.Add(c); } repository.IncomingChangesets = commits; } } catch { } return(repository); }
public Watchtower.Models.Repository GetOutgoingChanges(Watchtower.Models.Repository repository) { List <Watchtower.Models.Changeset> changesets = new List <Watchtower.Models.Changeset>(); Repository mercurialRepo = new Repository(repository.Path); IEnumerable <Changeset> outgoing = mercurialRepo.Outgoing(); foreach (Changeset cs in outgoing) { Watchtower.Models.Changeset changeset = new Watchtower.Models.Changeset(cs.Branch, cs.Revision, cs.AuthorEmailAddress, cs.Timestamp, cs.AuthorName, cs.CommitMessage); changesets.Add(changeset); } repository.OutgoingChangesets = changesets; mercurialRepo.Dispose(); return(repository); }