Sep.Git.Tfs.Commands.Labels.CreateLabelsForTfsBranch C# (CSharp) Method

CreateLabelsForTfsBranch() private method

private CreateLabelsForTfsBranch ( IGitTfsRemote tfsRemote ) : int
tfsRemote IGitTfsRemote
return int
        private int CreateLabelsForTfsBranch(IGitTfsRemote tfsRemote)
        {
            if (string.IsNullOrWhiteSpace(NameFilter))
                NameFilter = null;
            else
                NameFilter = NameFilter.Trim();

            UpdateRemote(tfsRemote);
            Trace.TraceInformation("Looking for label on " + tfsRemote.TfsRepositoryPath + "...");
            var labels = tfsRemote.Tfs.GetLabels(tfsRemote.TfsRepositoryPath, NameFilter);
            Trace.TraceInformation(labels.Count() + " labels found!");

            Regex exludeRegex = null;
            if (ExcludeNameFilter != null)
                exludeRegex = new Regex(ExcludeNameFilter);

            foreach (var label in labels)
            {
                if (ExcludeNameFilter != null && exludeRegex.IsMatch(label.Name))
                    continue;

                Trace.WriteLine("LabelId:" + label.Id + "/ChangesetId:" + label.ChangesetId + "/LabelName:" + label.Name + "/Owner:" + label.Owner);
                Trace.WriteLine("Try to find changeset in git repository...");
                string sha1TagCommit = _globals.Repository.FindCommitHashByChangesetId(label.ChangesetId);
                if (string.IsNullOrWhiteSpace(sha1TagCommit))
                {
                    Trace.WriteLine("This label does not match an existing commit...");
                    continue;
                }
                Trace.WriteLine("Commit found! sha1 : " + sha1TagCommit);

                string ownerName;
                string ownerEmail;
                if (_authors.Authors.ContainsKey(label.Owner))
                {
                    var author = _authors.Authors[label.Owner];
                    ownerName = author.Name;
                    ownerEmail = author.Email;
                }
                else
                {
                    ownerName = label.Owner;
                    ownerEmail = label.Owner;
                }
                var labelName = (label.IsTransBranch ? label.Name + "(" + tfsRemote.Id + ")" : label.Name).ToGitRefName();
                Trace.TraceInformation("Writing label '" + labelName + "'...");
                _globals.Repository.CreateTag(labelName, sha1TagCommit, label.Comment, ownerName, ownerEmail, label.Date);
            }
            return GitTfsExitCodes.OK;
        }