From 9cf08450c657f8ee1d23f3a306179fffb60906ae Mon Sep 17 00:00:00 2001 From: Vadim Skipin Date: Tue, 3 Apr 2012 19:01:36 +0400 Subject: [PATCH] Add support for OverrideGatedCheckIn --- GitTfs.Vs11/GitTfs.Vs11.csproj | 1 + GitTfs.Vs11/Wrappers.Vs11.cs | 23 +++++++++++++++++++++++ GitTfs.Vs2008/GitTfs.Vs2008.csproj | 13 +++++++------ GitTfs.Vs2008/Wrappers.Vs2008.cs | 20 ++++++++++++++++++++ GitTfs.Vs2010/GitTfs.Vs2010.csproj | 13 +++++++------ GitTfs.Vs2010/Wrappers.Vs2010.cs | 23 +++++++++++++++++++++++ GitTfs.VsCommon/Wrappers.cs | 13 +------------ GitTfs/Commands/CheckinOptions.cs | 3 +++ GitTfs/Core/TfsInterop/IWorkspace.cs | 2 +- GitTfs/Core/TfsWorkspace.cs | 2 +- 10 files changed, 87 insertions(+), 26 deletions(-) create mode 100644 GitTfs.Vs11/Wrappers.Vs11.cs create mode 100644 GitTfs.Vs2008/Wrappers.Vs2008.cs create mode 100644 GitTfs.Vs2010/Wrappers.Vs2010.cs diff --git a/GitTfs.Vs11/GitTfs.Vs11.csproj b/GitTfs.Vs11/GitTfs.Vs11.csproj index d4828069..cbeed3f8 100644 --- a/GitTfs.Vs11/GitTfs.Vs11.csproj +++ b/GitTfs.Vs11/GitTfs.Vs11.csproj @@ -75,6 +75,7 @@ + diff --git a/GitTfs.Vs11/Wrappers.Vs11.cs b/GitTfs.Vs11/Wrappers.Vs11.cs new file mode 100644 index 00000000..9d735d3d --- /dev/null +++ b/GitTfs.Vs11/Wrappers.Vs11.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Microsoft.TeamFoundation.VersionControl.Client; +using Sep.Git.Tfs.Core.TfsInterop; + +namespace Sep.Git.Tfs.VsCommon +{ + public partial class WrapperForWorkspace + { + public int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges, + TfsPolicyOverrideInfo policyOverrideInfo, bool overrideGatedCheckIn) + { + var checkinParameters = new WorkspaceCheckInParameters(_bridge.Unwrap(changes), comment) + { + CheckinNotes = _bridge.Unwrap(checkinNote), + AssociatedWorkItems = _bridge.Unwrap(workItemChanges), + PolicyOverride = ToTfs(policyOverrideInfo), + OverrideGatedCheckIn = overrideGatedCheckIn + }; + + return _workspace.CheckIn(checkinParameters); + } + } +} diff --git a/GitTfs.Vs2008/GitTfs.Vs2008.csproj b/GitTfs.Vs2008/GitTfs.Vs2008.csproj index f571a9f0..b40add6d 100644 --- a/GitTfs.Vs2008/GitTfs.Vs2008.csproj +++ b/GitTfs.Vs2008/GitTfs.Vs2008.csproj @@ -123,6 +123,7 @@ + @@ -148,12 +149,12 @@ - xcopy /y "$(TargetDir)*.dll" "$(SolutionDir)GitTfs\$(OutDir)" diff --git a/GitTfs.Vs2008/Wrappers.Vs2008.cs b/GitTfs.Vs2008/Wrappers.Vs2008.cs new file mode 100644 index 00000000..1f9dd04d --- /dev/null +++ b/GitTfs.Vs2008/Wrappers.Vs2008.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using Microsoft.TeamFoundation.VersionControl.Client; +using Sep.Git.Tfs.Core.TfsInterop; + +namespace Sep.Git.Tfs.VsCommon +{ + public partial class WrapperForWorkspace + { + public int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges, + TfsPolicyOverrideInfo policyOverrideInfo, bool overrideGatedCheckIn) + { + return _workspace.CheckIn( + _bridge.Unwrap(changes), + comment, + _bridge.Unwrap(checkinNote), + _bridge.Unwrap(workItemChanges), + ToTfs(policyOverrideInfo)); + } + } +} diff --git a/GitTfs.Vs2010/GitTfs.Vs2010.csproj b/GitTfs.Vs2010/GitTfs.Vs2010.csproj index 9a21cd1c..1a161ae3 100644 --- a/GitTfs.Vs2010/GitTfs.Vs2010.csproj +++ b/GitTfs.Vs2010/GitTfs.Vs2010.csproj @@ -113,6 +113,7 @@ + @@ -138,12 +139,12 @@ - xcopy /y "$(TargetDir)*.dll" "$(SolutionDir)GitTfs\$(OutDir)" diff --git a/GitTfs.Vs2010/Wrappers.Vs2010.cs b/GitTfs.Vs2010/Wrappers.Vs2010.cs new file mode 100644 index 00000000..9d735d3d --- /dev/null +++ b/GitTfs.Vs2010/Wrappers.Vs2010.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Microsoft.TeamFoundation.VersionControl.Client; +using Sep.Git.Tfs.Core.TfsInterop; + +namespace Sep.Git.Tfs.VsCommon +{ + public partial class WrapperForWorkspace + { + public int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges, + TfsPolicyOverrideInfo policyOverrideInfo, bool overrideGatedCheckIn) + { + var checkinParameters = new WorkspaceCheckInParameters(_bridge.Unwrap(changes), comment) + { + CheckinNotes = _bridge.Unwrap(checkinNote), + AssociatedWorkItems = _bridge.Unwrap(workItemChanges), + PolicyOverride = ToTfs(policyOverrideInfo), + OverrideGatedCheckIn = overrideGatedCheckIn + }; + + return _workspace.CheckIn(checkinParameters); + } + } +} diff --git a/GitTfs.VsCommon/Wrappers.cs b/GitTfs.VsCommon/Wrappers.cs index 05137c68..f07e1d05 100644 --- a/GitTfs.VsCommon/Wrappers.cs +++ b/GitTfs.VsCommon/Wrappers.cs @@ -379,7 +379,7 @@ namespace Sep.Git.Tfs.VsCommon } } - public class WrapperForWorkspace : WrapperFor, IWorkspace + public partial class WrapperForWorkspace : WrapperFor, IWorkspace { private readonly TfsApiBridge _bridge; private readonly Workspace _workspace; @@ -400,17 +400,6 @@ namespace Sep.Git.Tfs.VsCommon _workspace.Shelve(_bridge.Unwrap(shelveset), _bridge.Unwrap(changes), _bridge.Convert(options)); } - public int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges, - TfsPolicyOverrideInfo policyOverrideInfo) - { - return _workspace.CheckIn( - _bridge.Unwrap(changes), - comment, - _bridge.Unwrap(checkinNote), - _bridge.Unwrap(workItemChanges), - ToTfs(policyOverrideInfo)); - } - private PolicyOverrideInfo ToTfs(TfsPolicyOverrideInfo policyOverrideInfo) { if (policyOverrideInfo == null) diff --git a/GitTfs/Commands/CheckinOptions.cs b/GitTfs/Commands/CheckinOptions.cs index ce720266..2e82fbd7 100644 --- a/GitTfs/Commands/CheckinOptions.cs +++ b/GitTfs/Commands/CheckinOptions.cs @@ -25,6 +25,8 @@ namespace Sep.Git.Tfs.Commands { "w|work-item=:", "Associated work items\ne.g. -w12345 to associate with 12345\nor -w12345:resolve to resolve 12345", (n, opt) => { if(n == null) throw new OptionException("Missing work item number for option -w.", "-w"); (opt == "resolve" ? WorkItemsToResolve : WorkItemsToAssociate).Add(n); } }, + { "no-gate", "Disables gated checkin.", + v => { OverrideGatedCheckIn = true; } }, }; } } @@ -38,6 +40,7 @@ namespace Sep.Git.Tfs.Commands public bool NoMerge { get; set; } public string OverrideReason { get; set; } public bool Force { get; set; } + public bool OverrideGatedCheckIn { get; set; } public List WorkItemsToAssociate { get { return _workItemsToAssociate; } } public List WorkItemsToResolve { get { return _workItemsToResolve; } } } diff --git a/GitTfs/Core/TfsInterop/IWorkspace.cs b/GitTfs/Core/TfsInterop/IWorkspace.cs index 9a08ad93..35c35592 100644 --- a/GitTfs/Core/TfsInterop/IWorkspace.cs +++ b/GitTfs/Core/TfsInterop/IWorkspace.cs @@ -7,7 +7,7 @@ namespace Sep.Git.Tfs.Core.TfsInterop IPendingChange[] GetPendingChanges(); ICheckinEvaluationResult EvaluateCheckin(TfsCheckinEvaluationOptions options, IPendingChange[] allChanges, IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges); void Shelve(IShelveset shelveset, IPendingChange[] changes, TfsShelvingOptions options); - int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges, TfsPolicyOverrideInfo policyOverrideInfo); + int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable workItemChanges, TfsPolicyOverrideInfo policyOverrideInfo, bool overrideGatedCheckIn); int PendAdd(string path); int PendEdit(string path); int PendDelete(string path); diff --git a/GitTfs/Core/TfsWorkspace.cs b/GitTfs/Core/TfsWorkspace.cs index 46172df4..972ee0c5 100644 --- a/GitTfs/Core/TfsWorkspace.cs +++ b/GitTfs/Core/TfsWorkspace.cs @@ -93,7 +93,7 @@ namespace Sep.Git.Tfs.Core } var policyOverride = GetPolicyOverrides(checkinProblems.Result); - var newChangeset = _workspace.Checkin(pendingChanges, _checkinOptions.CheckinComment, null, workItemInfos, policyOverride); + var newChangeset = _workspace.Checkin(pendingChanges, _checkinOptions.CheckinComment, null, workItemInfos, policyOverride, _checkinOptions.OverrideGatedCheckIn); if(newChangeset == 0) { throw new GitTfsException("Checkin failed!");