public void FindDiffError(int startRevision, string path) { int revisionNumber = startRevision; string revision = scmDataWithoutCache.RevisionByNumber(revisionNumber); do { Console.WriteLine("Searching for diff errors in commit {0}({1})...", revision, revisionNumber); List <string> fileErrors = new List <string>(); foreach (var file in scmDataWithoutCache.Log(revision).TouchedFiles.Select(x => x.Path)) { if ((path != null) && (path != file)) { continue; } var diff = scmDataWithoutCache.Diff(revision, file); if (diff.AddedLines.Count() > 0) { var blame = scmDataWithoutCache.Blame(revision, file); foreach (var line in diff.AddedLines) { if (blame[line] != revision) { fileErrors.Add(string.Format( "Line {0}: added in diff, but blame say otherwise.", line )); } } foreach (var line in blame.Where(x => x.Value == revision).Select(x => x.Key)) { if (!diff.AddedLines.Contains(line)) { fileErrors.Add(string.Format( "Line {0}: not added in diff, but blame say otherwise.", line )); } } } if (fileErrors.Count > 0) { Console.WriteLine("Diff error in revision {0} in file {1}.", revision, file); foreach (var error in fileErrors) { Console.WriteLine(error); } return; } } revisionNumber++; revision = scmDataWithoutCache.RevisionByNumber(revisionNumber); } while (revision != null); Console.WriteLine("No diff errors."); }
public void Map(IDataStore data) { int nextRevisionNumber; string nextRevision; if (StartRevision == null) { if (CreateDataBase) { CreateSchema(data); } else if (RevisionExists(data, StopRevision)) { return; } nextRevisionNumber = MappingStartRevision(data); nextRevision = scmData.RevisionByNumber(nextRevisionNumber); } else { StopRevision = LastMappedRevision(data); nextRevision = StartRevision; nextRevisionNumber = NumberOfRevision(data, StartRevision); } do { if (OnRevisionMapping != null) { OnRevisionMapping(nextRevision, nextRevisionNumber.ToString()); } Map(data, nextRevision); nextRevision = nextRevision == StopRevision ? null : scmData.NextRevision(nextRevision); nextRevisionNumber++; } while (nextRevision != null); }
public string RevisionByNumber(int revisionNumber) { return(innerScmData.RevisionByNumber(revisionNumber)); }
public void Map(bool createSchema, int stopRevisionNumber) { Map(createSchema, scmData.RevisionByNumber(stopRevisionNumber)); }