From ff77e67cf7bdaed947902b47f940e6c4a68aeb64 Mon Sep 17 00:00:00 2001 From: Matt Burke Date: Thu, 27 Jan 2011 14:52:53 -0500 Subject: [PATCH] Short-circuit checkintool if the checkin dialog isn't available. --- GitTfs.Vs2008/TfsHelper.Vs2008.cs | 2 ++ GitTfs.Vs2010/TfsHelper.Vs2010.cs | 2 ++ GitTfs/Commands/CheckinTool.cs | 7 ++++++- GitTfs/Core/TfsInterop/ITfsHelper.cs | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/GitTfs.Vs2008/TfsHelper.Vs2008.cs b/GitTfs.Vs2008/TfsHelper.Vs2008.cs index 6b96f8b8..d2b2476e 100644 --- a/GitTfs.Vs2008/TfsHelper.Vs2008.cs +++ b/GitTfs.Vs2008/TfsHelper.Vs2008.cs @@ -14,6 +14,8 @@ namespace Sep.Git.Tfs.VsCommon get { return typeof(TeamFoundationServer).Assembly.GetName().Version.ToString() + " (MS)"; } } + public bool CanShowCheckinDialog { get { return false; } } + public bool ShowCheckinDialog(IWorkspace workspace, IPendingChange[] pendingChanges, IEnumerable checkedInfos, string checkinComment) { throw new NotImplementedException(); diff --git a/GitTfs.Vs2010/TfsHelper.Vs2010.cs b/GitTfs.Vs2010/TfsHelper.Vs2010.cs index fc3e4caa..395f57b0 100644 --- a/GitTfs.Vs2010/TfsHelper.Vs2010.cs +++ b/GitTfs.Vs2010/TfsHelper.Vs2010.cs @@ -41,6 +41,8 @@ namespace Sep.Git.Tfs.VsCommon } } + public bool CanShowCheckinDialog { get { return true; } } + public bool ShowCheckinDialog(IWorkspace workspace, IPendingChange[] pendingChanges, IEnumerable checkedInfos, string checkinComment) { diff --git a/GitTfs/Commands/CheckinTool.cs b/GitTfs/Commands/CheckinTool.cs index 242b6ffb..dd5ac332 100644 --- a/GitTfs/Commands/CheckinTool.cs +++ b/GitTfs/Commands/CheckinTool.cs @@ -35,7 +35,12 @@ namespace Sep.Git.Tfs.Commands { return _writer.Write(refToCheckin, changeset => { - changeset.Remote.CheckinTool(refToCheckin, changeset); + if (changeset.Remote.Tfs.CanShowCheckinDialog) + changeset.Remote.CheckinTool(refToCheckin, changeset); + else + throw new Exception( + "checkintool does not work with this TFS version (" + changeset.Remote.Tfs.TfsClientLibraryVersion + ").", + new[] {"Try installing the VS2010 edition of Team Explorer."}); return GitTfsExitCodes.OK; }); } diff --git a/GitTfs/Core/TfsInterop/ITfsHelper.cs b/GitTfs/Core/TfsInterop/ITfsHelper.cs index 05006b2a..64c72237 100644 --- a/GitTfs/Core/TfsInterop/ITfsHelper.cs +++ b/GitTfs/Core/TfsInterop/ITfsHelper.cs @@ -18,6 +18,7 @@ namespace Sep.Git.Tfs.Core.TfsInterop IChangeset GetChangeset(int changesetId); bool MatchesUrl(string tfsUrl); bool HasShelveset(string shelvesetName); + bool CanShowCheckinDialog { get; } bool ShowCheckinDialog(IWorkspace workspace, IPendingChange[] pendingChanges, IEnumerable checkedInfos, string checkinComment); } } \ No newline at end of file