Merge pull request #149 from xelibrion/master

Fixed issue #148
This commit is contained in:
Matt Burke
2012-02-26 04:43:22 -08:00
+35 -23
View File
@@ -1,14 +1,14 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using Microsoft.TeamFoundation.Server;
using Microsoft.TeamFoundation.VersionControl.Client;
using Sep.Git.Tfs.Core.TfsInterop;
using System.Collections.Generic;
using System.IO;
namespace Sep.Git.Tfs.VsCommon
{
public class WrapperForVersionControlServer :WrapperFor<VersionControlServer>, IVersionControlServer
public class WrapperForVersionControlServer : WrapperFor<VersionControlServer>, IVersionControlServer
{
private readonly TfsApiBridge _bridge;
private readonly VersionControlServer _versionControlServer;
@@ -37,15 +37,18 @@ namespace Sep.Git.Tfs.VsCommon
DeletedState.NonDeleted,
ItemType.Any,
true
);
);
return _bridge.Wrap<WrapperForItem, Item>(itemSet.Items);
}
public IEnumerable<IChangeset> QueryHistory(string path, int version, int deletionId,
TfsRecursionType recursion, string user, int versionFrom, int versionTo, int maxCount,
bool includeChanges, bool slotMode, bool includeDownloadInfo)
public IEnumerable<IChangeset> QueryHistory(string path, int version, int deletionId,
TfsRecursionType recursion, string user, int versionFrom, int versionTo, int maxCount,
bool includeChanges, bool slotMode, bool includeDownloadInfo)
{
var history = _versionControlServer.QueryHistory(path, new ChangesetVersionSpec(version), deletionId, _bridge.Convert<RecursionType>(recursion), user, new ChangesetVersionSpec(versionFrom), new ChangesetVersionSpec(versionTo), maxCount, includeChanges, slotMode, includeDownloadInfo);
var history = _versionControlServer.QueryHistory(path, new ChangesetVersionSpec(version), deletionId,
_bridge.Convert<RecursionType>(recursion), user, new ChangesetVersionSpec(versionFrom),
new ChangesetVersionSpec(versionTo), maxCount, includeChanges, slotMode,
includeDownloadInfo);
return _bridge.Wrap<WrapperForChangeset, Changeset>(history);
}
}
@@ -61,7 +64,7 @@ namespace Sep.Git.Tfs.VsCommon
_changeset = changeset;
}
public IChange [] Changes
public IChange[] Changes
{
get { return _bridge.Wrap<WrapperForChange, Change>(_changeset.Changes); }
}
@@ -72,7 +75,7 @@ namespace Sep.Git.Tfs.VsCommon
{
var committer = _changeset.Committer;
var owner = _changeset.Owner;
// Sometimes TFS itself commits the changeset
if (owner != committer)
return owner;
@@ -248,7 +251,8 @@ namespace Sep.Git.Tfs.VsCommon
public class WrapperForCheckinNote : WrapperFor<CheckinNote>, ICheckinNote
{
public WrapperForCheckinNote(CheckinNote checkiNote) : base(checkiNote)
{}
{
}
}
public class WrapperForCheckinEvaluationResult : WrapperFor<CheckinEvaluationResult>, ICheckinEvaluationResult
@@ -386,17 +390,18 @@ namespace Sep.Git.Tfs.VsCommon
_workspace = workspace;
}
public IPendingChange [] GetPendingChanges()
public IPendingChange[] GetPendingChanges()
{
return _bridge.Wrap<WrapperForPendingChange, PendingChange>(_workspace.GetPendingChanges());
}
public void Shelve(IShelveset shelveset, IPendingChange [] changes, TfsShelvingOptions options)
public void Shelve(IShelveset shelveset, IPendingChange[] changes, TfsShelvingOptions options)
{
_workspace.Shelve(_bridge.Unwrap<Shelveset>(shelveset), _bridge.Unwrap<PendingChange>(changes), _bridge.Convert<ShelvingOptions>(options));
}
public int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable<IWorkItemCheckinInfo> workItemChanges, TfsPolicyOverrideInfo policyOverrideInfo)
public int Checkin(IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable<IWorkItemCheckinInfo> workItemChanges,
TfsPolicyOverrideInfo policyOverrideInfo)
{
return _workspace.CheckIn(
_bridge.Unwrap<PendingChange>(changes),
@@ -414,7 +419,8 @@ namespace Sep.Git.Tfs.VsCommon
_bridge.Unwrap<PolicyFailure>(policyOverrideInfo.Failures));
}
public ICheckinEvaluationResult EvaluateCheckin(TfsCheckinEvaluationOptions options, IPendingChange[] allChanges, IPendingChange[] changes, string comment, ICheckinNote checkinNote, IEnumerable<IWorkItemCheckinInfo> workItemChanges)
public ICheckinEvaluationResult EvaluateCheckin(TfsCheckinEvaluationOptions options, IPendingChange[] allChanges, IPendingChange[] changes,
string comment, ICheckinNote checkinNote, IEnumerable<IWorkItemCheckinInfo> workItemChanges)
{
return _bridge.Wrap<WrapperForCheckinEvaluationResult, CheckinEvaluationResult>(_workspace.EvaluateCheckin(
_bridge.Convert<CheckinEvaluationOptions>(options),
@@ -442,17 +448,11 @@ namespace Sep.Git.Tfs.VsCommon
public int PendRename(string pathFrom, string pathTo)
{
//looks like TFS Api cannot overwrite existing target file
EnsureTargetFileDoesNotExist(pathTo);
TfsApiLimitations.PendRename.EnsureTargetFileDoesNotExist(pathTo);
return _workspace.PendRename(pathFrom, pathTo);
}
private void EnsureTargetFileDoesNotExist(string pathTo)
{
File.Delete(pathTo);
}
public void ForceGetFile(string path, int changeset)
{
var item = new ItemSpec(path, RecursionType.None);
@@ -464,4 +464,16 @@ namespace Sep.Git.Tfs.VsCommon
get { return _workspace.OwnerName; }
}
}
}
internal class TfsApiLimitations
{
internal class PendRename
{
internal static void EnsureTargetFileDoesNotExist(string pathTo)
{
if (File.Exists(pathTo))
File.Delete(pathTo);
}
}
}
}