private IEnumerable <string> TranslateWorkItems(IEnumerable <string> workItemsOriginal) { if (ExportWorkitemsMapping.Count == 0) { return(workItemsOriginal); } List <string> workItemsTranslated = new List <string>(); if (workItemsOriginal == null) { return(workItemsTranslated); } foreach (var oldWorkItemId in workItemsOriginal) { string translatedWorkItemId = null; if (oldWorkItemId != null && !ExportWorkitemsMapping.TryGetValue(oldWorkItemId, out translatedWorkItemId)) { translatedWorkItemId = oldWorkItemId; } if (translatedWorkItemId != null) { workItemsTranslated.Add(translatedWorkItemId); } } return(workItemsTranslated); }
private string ProcessChangeset(ITfsChangeset changeset, LogEntry log) { if (ExportMetadatas) { if (changeset.Summary.Workitems.Any()) { var workItems = TranslateWorkItems(changeset.Summary.Workitems.Select(wi => new ExportWorkItem(wi))); if (workItems != null) { log.Log += "\nWorkitems:"; foreach (var workItem in workItems) { log.Log += "\n#" + workItem.Id + " " + workItem.Title; } } } if (!string.IsNullOrWhiteSpace(changeset.Summary.PolicyOverrideComment)) { log.Log += "\n" + GitTfsConstants.GitTfsPolicyOverrideCommentPrefix + " " + changeset.Summary.PolicyOverrideComment; } foreach (var checkinNote in changeset.Summary.CheckinNotes) { if (!string.IsNullOrWhiteSpace(checkinNote.Name) && !string.IsNullOrWhiteSpace(checkinNote.Value)) { log.Log += "\n" + GitTfsConstants.GitTfsPrefix + "-" + CamelCaseToDelimitedStringConverter.Convert(checkinNote.Name, "-") + ": " + checkinNote.Value; } } } var commitSha = Commit(log); UpdateTfsHead(commitSha, changeset.Summary.ChangesetId); StringBuilder metadatas = new StringBuilder(); if (changeset.Summary.Workitems.Any()) { string workitemNote = "Workitems:\n"; foreach (var workitem in changeset.Summary.Workitems) { var workitemId = workitem.Id.ToString(); var workitemUrl = workitem.Url; if (ExportMetadatas && ExportWorkitemsMapping.Count != 0) { if (ExportWorkitemsMapping.ContainsKey(workitemId)) { var oldWorkitemId = workitemId; workitemId = ExportWorkitemsMapping[workitemId].Id; workitemUrl = workitemUrl.Replace(oldWorkitemId, workitemId); } } workitemNote += string.Format("[{0}] {1}\n {2}\n", workitemId, workitem.Title, workitemUrl); } metadatas.Append(workitemNote); } if (!string.IsNullOrWhiteSpace(changeset.Summary.PolicyOverrideComment)) { metadatas.Append("\nPolicy Override Comment: " + changeset.Summary.PolicyOverrideComment); } foreach (var checkinNote in changeset.Summary.CheckinNotes) { if (!string.IsNullOrWhiteSpace(checkinNote.Name) && !string.IsNullOrWhiteSpace(checkinNote.Value)) { metadatas.Append("\n" + checkinNote.Name + ": " + checkinNote.Value); } } if (!string.IsNullOrWhiteSpace(changeset.OmittedParentBranch)) { metadatas.Append("\nOmitted parent branch: " + changeset.OmittedParentBranch); } if (metadatas.Length != 0) { Repository.CreateNote(commitSha, metadatas.ToString(), log.AuthorName, log.AuthorEmail, log.Date); } return(commitSha); }
private string ProcessChangeset(ITfsChangeset changeset, LogEntry log) { if (ExportMetadatas) { if (changeset.Summary.Workitems.Any()) { var workItemIds = TranslateWorkItems(changeset.Summary.Workitems.Select(wi => wi.Id.ToString())); if (workItemIds != null) { log.Log += "\nwork-items: " + string.Join(", ", workItemIds.Select(s => "#" + s)); } } if (!string.IsNullOrWhiteSpace(changeset.Summary.PolicyOverrideComment)) { log.Log += "\n" + GitTfsConstants.GitTfsPolicyOverrideCommentPrefix + changeset.Summary.PolicyOverrideComment; } if (!string.IsNullOrWhiteSpace(changeset.Summary.CodeReviewer)) { log.Log += "\n" + GitTfsConstants.GitTfsCodeReviewerPrefix + changeset.Summary.CodeReviewer; } if (!string.IsNullOrWhiteSpace(changeset.Summary.SecurityReviewer)) { log.Log += "\n" + GitTfsConstants.GitTfsSecurityReviewerPrefix + changeset.Summary.SecurityReviewer; } if (!string.IsNullOrWhiteSpace(changeset.Summary.PerformanceReviewer)) { log.Log += "\n" + GitTfsConstants.GitTfsPerformanceReviewerPrefix + changeset.Summary.PerformanceReviewer; } } var commitSha = Commit(log); UpdateTfsHead(commitSha, changeset.Summary.ChangesetId); StringBuilder metadatas = new StringBuilder(); if (changeset.Summary.Workitems.Any()) { string workitemNote = "Workitems:\n"; foreach (var workitem in changeset.Summary.Workitems) { var workitemId = workitem.Id.ToString(); var workitemUrl = workitem.Url; if (ExportMetadatas && ExportWorkitemsMapping.Count != 0) { if (ExportWorkitemsMapping.ContainsKey(workitemId)) { var oldWorkitemId = workitemId; workitemId = ExportWorkitemsMapping[workitemId]; workitemUrl = workitemUrl.Replace(oldWorkitemId, workitemId); } } workitemNote += String.Format("[{0}] {1}\n {2}\n", workitemId, workitem.Title, workitemUrl); } metadatas.Append(workitemNote); } if (!string.IsNullOrWhiteSpace(changeset.Summary.PolicyOverrideComment)) { metadatas.Append("\nPolicy Override Comment:" + changeset.Summary.PolicyOverrideComment); } if (!string.IsNullOrWhiteSpace(changeset.Summary.CodeReviewer)) { metadatas.Append("\nCode Reviewer:" + changeset.Summary.CodeReviewer); } if (!string.IsNullOrWhiteSpace(changeset.Summary.SecurityReviewer)) { metadatas.Append("\nSecurity Reviewer:" + changeset.Summary.SecurityReviewer); } if (!string.IsNullOrWhiteSpace(changeset.Summary.PerformanceReviewer)) { metadatas.Append("\nPerformance Reviewer:" + changeset.Summary.PerformanceReviewer); } if (!string.IsNullOrWhiteSpace(changeset.OmittedParentBranch)) { metadatas.Append("\nOmitted parent branch: " + changeset.OmittedParentBranch); } if (metadatas.Length != 0) { Repository.CreateNote(commitSha, metadatas.ToString(), log.AuthorName, log.AuthorEmail, log.Date); } return(commitSha); }
public IFetchResult FetchWithMerge(long mergeChangesetId, bool stopOnFailMergeCommit = false, params string[] parentCommitsHashes) { var fetchResult = new FetchResult { IsSuccess = true }; var fetchedChangesets = FetchChangesets().ToList(); fetchResult.NewChangesetCount = fetchedChangesets.Count; foreach (var changeset in fetchedChangesets) { AssertTemporaryIndexClean(MaxCommitHash); var log = Apply(MaxCommitHash, changeset); if (changeset.IsMergeChangeset) { var parentChangesetId = Tfs.FindMergeChangesetParent(TfsRepositoryPath, changeset.Summary.ChangesetId, this); var shaParent = Repository.FindCommitHashByChangesetId(parentChangesetId); if (shaParent == null) { shaParent = FindMergedRemoteAndFetch(parentChangesetId, stopOnFailMergeCommit); } if (shaParent != null) { log.CommitParents.Add(shaParent); } else { if (stopOnFailMergeCommit) { fetchResult.IsSuccess = false; fetchResult.LastFetchedChangesetId = MaxChangesetId; return(fetchResult); } //TODO : Manage case where there is not yet a git commit for the parent changset!!!!! stdout.WriteLine("warning: this changeset " + changeset.Summary.ChangesetId + " is a merge changeset. But it can't have been managed accordingly because one of the parent changeset " + parentChangesetId + " is not present in the repository! If you want to do it, fetch the branch containing this changeset before retrying..."); } } if (changeset.Summary.ChangesetId == mergeChangesetId) { foreach (var parent in parentCommitsHashes) { log.CommitParents.Add(parent); } } if (ExportMetadatas) { if (changeset.Summary.Workitems.Any()) { log.Log += "\nwork-items: " + string.Join(", ", changeset.Summary.Workitems.Select(wi => "#" + wi.Id));; } if (ExportWorkitemsMapping.Count != 0) { foreach (var mapping in ExportWorkitemsMapping) { log.Log = log.Log.Replace("#" + mapping.Key, "#" + mapping.Value); } } if (!string.IsNullOrWhiteSpace(changeset.Summary.PolicyOverrideComment)) { log.Log += "\n" + GitTfsConstants.GitTfsPolicyOverrideCommentPrefix + changeset.Summary.PolicyOverrideComment; } if (!string.IsNullOrWhiteSpace(changeset.Summary.CodeReviewer)) { log.Log += "\n" + GitTfsConstants.GitTfsCodeReviewerPrefix + changeset.Summary.CodeReviewer; } if (!string.IsNullOrWhiteSpace(changeset.Summary.SecurityReviewer)) { log.Log += "\n" + GitTfsConstants.GitTfsSecurityReviewerPrefix + changeset.Summary.SecurityReviewer; } if (!string.IsNullOrWhiteSpace(changeset.Summary.PerformanceReviewer)) { log.Log += "\n" + GitTfsConstants.GitTfsPerformanceReviewerPrefix + changeset.Summary.PerformanceReviewer; } } var commitSha = Commit(log); UpdateTfsHead(commitSha, changeset.Summary.ChangesetId); StringBuilder metadatas = new StringBuilder(); if (changeset.Summary.Workitems.Any()) { string workitemNote = "Workitems:\n"; foreach (var workitem in changeset.Summary.Workitems) { var workitemId = workitem.Id.ToString(); var workitemUrl = workitem.Url; if (ExportMetadatas && ExportWorkitemsMapping.Count != 0) { if (ExportWorkitemsMapping.ContainsKey(workitemId)) { var oldWorkitemId = workitemId; workitemId = ExportWorkitemsMapping[workitemId]; workitemUrl = workitemUrl.Replace(oldWorkitemId, workitemId); } } workitemNote += String.Format("[{0}] {1}\n {2}\n", workitemId, workitem.Title, workitemUrl); } metadatas.Append(workitemNote); } if (!string.IsNullOrWhiteSpace(changeset.Summary.PolicyOverrideComment)) { metadatas.Append("\nPolicy Override Comment:" + changeset.Summary.PolicyOverrideComment); } if (!string.IsNullOrWhiteSpace(changeset.Summary.CodeReviewer)) { metadatas.Append("\nCode Reviewer:" + changeset.Summary.CodeReviewer); } if (!string.IsNullOrWhiteSpace(changeset.Summary.SecurityReviewer)) { metadatas.Append("\nSecurity Reviewer:" + changeset.Summary.SecurityReviewer); } if (!string.IsNullOrWhiteSpace(changeset.Summary.PerformanceReviewer)) { metadatas.Append("\nPerformance Reviewer:" + changeset.Summary.PerformanceReviewer); } if (metadatas.Length != 0) { Repository.CreateNote(commitSha, metadatas.ToString(), log.AuthorName, log.AuthorEmail, log.Date); } DoGcIfNeeded(); } return(fetchResult); }