Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }