コード例 #1
0
        int?FinishImportCommit(LibGit2Sharp.Commit gitCommit, List <int> parentCommits)
        {
            string commitHash = gitCommit.Sha;
            var    commit     = new DataAccess.Collector.Commit();

            commit.Hash       = commitHash;
            commit.CommitDate = gitCommit.Committer.When.UtcDateTime;
            db.Context.Commits.AddObject(commit);
            db.Context.SaveChanges();
            Debug.WriteLine("Imported commit " + commitHash + " as " + commit.Id);

            // Fix existing sessions referencing this commit:
            int?svnRevision = null;

            if (EnableGitSvnImport)
            {
                foreach (string messageLine in gitCommit.Message.Split('\n', '\r'))
                {
                    Match m = gitSvnRegex.Match(messageLine);
                    if (m.Success)
                    {
                        // determine SVN revision numbers for commits imported from SVN
                        svnRevision = int.Parse(m.Groups[1].Value);
                        break;
                    }
                }
            }
            if (svnRevision != null)
            {
                svnRevisionToCommitIdMapping[svnRevision.Value] = commit.Id;
            }
            else
            {
                var sessionsThatNeedUpdate = from s in db.Context.Sessions
                                             join ed in db.Context.EnvironmentDatas on s.Id equals ed.SessionId
                                             join edn in db.Context.EnvironmentDataNames on ed.EnvironmentDataNameId equals edn.Id
                                             join edv in db.Context.EnvironmentDataValues on ed.EnvironmentDataValueId equals edv.Id
                                             where edn.Name == "commit" && edv.Name == commitHash
                                             select s;
                int updatedSessionsCount = 0;
                foreach (var session in sessionsThatNeedUpdate)
                {
                    session.CommitId = commit.Id;
                    updatedSessionsCount++;
                }
                if (updatedSessionsCount > 0)
                {
                    Debug.WriteLine("Updated " + updatedSessionsCount + " sessions referencing this commit");
                }
            }

            // Now create the relation to the parent commits:
            foreach (int parentCommit in parentCommits)
            {
                CommitRelation r = new CommitRelation();
                r.ParentCommit = parentCommit;
                r.ChildCommit  = commit.Id;
                db.Context.CommitRelations.AddObject(r);
            }
            db.Context.SaveChanges();

            return(commit.Id);
        }
コード例 #2
0
        int? FinishImportCommit(LibGit2Sharp.Commit gitCommit, List<int> parentCommits)
        {
            string commitHash = gitCommit.Sha;
            var commit = new DataAccess.Collector.Commit();
            commit.Hash = commitHash;
            commit.CommitDate = gitCommit.Committer.When.UtcDateTime;
            db.Context.Commits.AddObject(commit);
            db.Context.SaveChanges();
            Debug.WriteLine("Imported commit " + commitHash + " as " + commit.Id);

            // Fix existing sessions referencing this commit:
            int? svnRevision = null;
            if (EnableGitSvnImport) {
                foreach (string messageLine in gitCommit.Message.Split('\n', '\r')) {
                    Match m = gitSvnRegex.Match(messageLine);
                    if (m.Success) {
                        // determine SVN revision numbers for commits imported from SVN
                        svnRevision = int.Parse(m.Groups[1].Value);
                        break;
                    }
                }
            }
            if (svnRevision != null) {
                svnRevisionToCommitIdMapping[svnRevision.Value] = commit.Id;
            } else {
                var sessionsThatNeedUpdate = from s in db.Context.Sessions
                                         join ed in db.Context.EnvironmentDatas on s.Id equals ed.SessionId
                                         join edn in db.Context.EnvironmentDataNames on ed.EnvironmentDataNameId equals edn.Id
                                         join edv in db.Context.EnvironmentDataValues on ed.EnvironmentDataValueId equals edv.Id
                                         where edn.Name == "commit" && edv.Name == commitHash
                                         select s;
                int updatedSessionsCount = 0;
                foreach (var session in sessionsThatNeedUpdate) {
                    session.CommitId = commit.Id;
                    updatedSessionsCount++;
                }
                if (updatedSessionsCount > 0)
                    Debug.WriteLine("Updated " + updatedSessionsCount + " sessions referencing this commit");
            }

            // Now create the relation to the parent commits:
            foreach (int parentCommit in parentCommits) {
                CommitRelation r = new CommitRelation();
                r.ParentCommit = parentCommit;
                r.ChildCommit = commit.Id;
                db.Context.CommitRelations.AddObject(r);
            }
            db.Context.SaveChanges();

            return commit.Id;
        }