Merge pull request #275 from pmiossec/filter_label_by_name

Filter label by name
This commit is contained in:
Matt Burke
2013-01-08 05:01:58 -05:00
4 changed files with 25 additions and 6 deletions
+3 -2
View File
@@ -574,9 +574,10 @@ namespace Sep.Git.Tfs.VsCommon
return new WorkItemCheckedInfo(Convert.ToInt32(workitem), true, checkinAction);
}
public IEnumerable<TfsLabel> GetLabels(string tfsPathBranch)
public IEnumerable<TfsLabel> GetLabels(string tfsPathBranch, string nameFilter = null)
{
var labels = VersionControl.QueryLabels(null, tfsPathBranch, null, true, tfsPathBranch, VersionSpec.Latest);
var labels = VersionControl.QueryLabels(nameFilter, tfsPathBranch, null, true, tfsPathBranch, VersionSpec.Latest);
return labels.Select(e => new TfsLabel {
Id = e.LabelId,
Name = e.Name,
+1 -1
View File
@@ -351,7 +351,7 @@ namespace Sep.Git.Tfs.VsFake
throw new NotImplementedException();
}
public IEnumerable<TfsLabel> GetLabels(string tfsPathBranch)
public IEnumerable<TfsLabel> GetLabels(string tfsPathBranch, string nameFilter = null)
{
throw new NotImplementedException();
}
+19 -1
View File
@@ -3,6 +3,7 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using NDesk.Options;
using Sep.Git.Tfs.Core;
using StructureMap;
@@ -24,6 +25,8 @@ namespace Sep.Git.Tfs.Commands
public string TfsPassword { get; set; }
public string ParentBranch { get; set; }
public bool LabelAllBranches { get; set; }
public string NameFilter { get; set; }
public string ExcludeNameFilter { get; set; }
string AuthorsFilePath { get; set; }
public Labels(TextWriter stdout, Globals globals, AuthorsFile authors)
@@ -40,6 +43,8 @@ namespace Sep.Git.Tfs.Commands
return new OptionSet
{
{ "all|fetch-all", "Fetch all the labels on all the TFS remotes (For TFS 2010 and later)", v => LabelAllBranches = v != null },
{ "n|label-name=", "Fetch all the labels respecting this name filter", v => NameFilter = v },
{ "e|exclude-label-name=", "Exclude all the labels respecting this regex name filter", v => ExcludeNameFilter = v },
{ "u|username=", "TFS username", v => TfsUsername = v },
{ "p|password=", "TFS password", v => TfsPassword = v },
{ "a|authors=", "Path to an Authors file to map TFS users to Git users", v => AuthorsFilePath = v },
@@ -83,12 +88,25 @@ namespace Sep.Git.Tfs.Commands
private int CreateLabelsForTfsBranch(IGitTfsRemote tfsRemote)
{
if (string.IsNullOrWhiteSpace(NameFilter))
NameFilter = null;
else
NameFilter = NameFilter.Trim();
UpdateRemote(tfsRemote);
_stdout.WriteLine("Looking for label on " + tfsRemote.TfsRepositoryPath + "...");
var labels = tfsRemote.Tfs.GetLabels(tfsRemote.TfsRepositoryPath);
var labels = tfsRemote.Tfs.GetLabels(tfsRemote.TfsRepositoryPath, NameFilter);
_stdout.WriteLine(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.FindCommitHashByCommitMessage("git-tfs-id: .*;C" + label.ChangesetId + "[^0-9]");
+2 -2
View File
@@ -28,9 +28,9 @@ namespace Sep.Git.Tfs.Core.TfsInterop
long ShowCheckinDialog(IWorkspace workspace, IPendingChange[] pendingChanges, IEnumerable<IWorkItemCheckedInfo> checkedInfos, string checkinComment);
void CleanupWorkspaces(string workingDirectory);
int GetRootChangesetForBranch(string tfsPathBranchToCreate, string tfsPathParentBranch = null);
IEnumerable<TfsLabel> GetLabels(string tfsPathBranch);
IEnumerable<TfsLabel> GetLabels(string tfsPathBranch, string nameFilter = null);
bool CanGetBranchInformation { get; }
IEnumerable<string> GetAllTfsBranchesOrderedByCreation();
void EnsureAuthenticated();
}
}
}