Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }