Made TFS interfaces match their original types a little better.

This commit is contained in:
Matt Burke
2010-04-20 18:01:53 -04:00
parent 10f82fb93d
commit 75e0efd1d3
8 changed files with 48 additions and 17 deletions
+1 -2
View File
@@ -83,8 +83,7 @@ namespace Sep.Git.Tfs.Core
private string GetPathBeforeRename(IItem item)
{
return item.GetVersion(item.ChangesetId - 1).ServerItem;
//return item.VersionControlServer.GetItem(item.ItemId, item.ChangesetId - 1).ServerItem;
return item.VersionControlServer.GetItem(item.ItemId, item.ChangesetId - 1).ServerItem;
}
private void Update(IChange change, string pathInGitRepo, GitIndexInfo index, IDictionary<string, GitObject> initialTree)
+1 -2
View File
@@ -1,11 +1,10 @@
using System;
using System.Collections.Generic;
namespace Sep.Git.Tfs.Core.TfsInterop
{
public interface IChangeset
{
IEnumerable<IChange> Changes { get; }
IChange [] Changes { get; }
string Committer { get; }
DateTime CreationDate { get; }
string Comment { get; }
+2 -1
View File
@@ -2,11 +2,12 @@ namespace Sep.Git.Tfs.Core.TfsInterop
{
public interface IItem
{
IItem GetVersion(int changeset);
IVersionControlServer VersionControlServer { get; }
int ChangesetId { get; }
string ServerItem { get; }
decimal DeletionId { get; }
TfsItemType ItemType { get; }
int ItemId { get; }
void DownloadFile(string file);
}
}
@@ -0,0 +1,7 @@
namespace Sep.Git.Tfs.Core.TfsInterop
{
public interface IVersionControlServer
{
IItem GetItem(int itemId, int changesetNumber);
}
}
+2 -4
View File
@@ -1,11 +1,9 @@
using System.Collections.Generic;
namespace Sep.Git.Tfs.Core.TfsInterop
{
public interface IWorkspace
{
IEnumerable<IPendingChange> GetPendingChanges();
void Shelve(IShelveset shelveset, IEnumerable<IPendingChange> changes, TfsShelvingOptions options);
IPendingChange[] GetPendingChanges();
void Shelve(IShelveset shelveset, IPendingChange [] changes, TfsShelvingOptions options);
int PendAdd(string path);
int PendEdit(string path);
int PendDelete(string path);
+29 -8
View File
@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Microsoft.TeamFoundation.Server;
@@ -8,6 +7,23 @@ using Microsoft.TeamFoundation.VersionControl.Client;
namespace Sep.Git.Tfs.Core.TfsInterop
{
// These things should be auto-generated, or reflected, or duck-typed, or something to break the explicit dependence on the TF dlls.
class NeedsToBeReflectedVersionControlServer :WrapperFor<VersionControlServer>, IVersionControlServer
{
private readonly TfsApiBridge _bridge;
private readonly VersionControlServer _versionControlServer;
public NeedsToBeReflectedVersionControlServer(TfsApiBridge bridge, VersionControlServer versionControlServer) : base(versionControlServer)
{
_bridge = bridge;
_versionControlServer = versionControlServer;
}
public IItem GetItem(int itemId, int changesetNumber)
{
return _bridge.Wrap(_versionControlServer.GetItem(itemId, changesetNumber));
}
}
class NeedsToBeReflectedChangeset : WrapperFor<Changeset>, IChangeset
{
private readonly TfsApiBridge _bridge;
@@ -19,9 +35,9 @@ namespace Sep.Git.Tfs.Core.TfsInterop
_changeset = changeset;
}
public IEnumerable<IChange> Changes
public IChange [] Changes
{
get { return _changeset.Changes.Select(c => _bridge.Wrap(c)); }
get { return _changeset.Changes.Select(c => _bridge.Wrap(c)).ToArray(); }
}
public string Committer
@@ -78,9 +94,9 @@ namespace Sep.Git.Tfs.Core.TfsInterop
_item = item;
}
public IItem GetVersion(int changeset)
public IVersionControlServer VersionControlServer
{
return _bridge.Wrap(_item.VersionControlServer.GetItem(_item.ItemId, _item.ChangesetId - 1));
get { return _bridge.Wrap(_item.VersionControlServer); }
}
public int ChangesetId
@@ -103,6 +119,11 @@ namespace Sep.Git.Tfs.Core.TfsInterop
get { return _bridge.Convert(_item.ItemType); }
}
public int ItemId
{
get { return _item.ItemId; }
}
public void DownloadFile(string file)
{
_item.DownloadFile(file);
@@ -185,12 +206,12 @@ namespace Sep.Git.Tfs.Core.TfsInterop
_workspace = workspace;
}
public IEnumerable<IPendingChange> GetPendingChanges()
public IPendingChange [] GetPendingChanges()
{
return _workspace.GetPendingChanges().Select(c => _bridge.Wrap(c));
return _workspace.GetPendingChanges().Select(c => _bridge.Wrap(c)).ToArray();
}
public void Shelve(IShelveset shelveset, IEnumerable<IPendingChange> changes, TfsShelvingOptions options)
public void Shelve(IShelveset shelveset, IPendingChange [] changes, TfsShelvingOptions options)
{
_workspace.Shelve(_bridge.Unwrap(shelveset), changes.Select(c => _bridge.Unwrap(c)).ToArray(), _bridge.Convert(options));
}
+5
View File
@@ -62,6 +62,11 @@ namespace Sep.Git.Tfs.Core.TfsInterop
return new NeedsToBeReflectedWorkItemCheckinInfo(workItemCheckinInfo);
}
public IVersionControlServer Wrap(VersionControlServer versionControlServer)
{
return new NeedsToBeReflectedVersionControlServer(this, versionControlServer);
}
public WorkItemCheckinInfo Unwrap(IWorkItemCheckinInfo info)
{
return WrapperFor<WorkItemCheckinInfo>.Unwrap(info);
+1
View File
@@ -106,6 +106,7 @@
<Compile Include="Core\IGitTfsRemote.cs" />
<Compile Include="Core\ITfsWorkspace.cs" />
<Compile Include="Core\Mode.cs" />
<Compile Include="Core\TfsInterop\IVersionControlServer.cs" />
<Compile Include="Core\TfsInterop\TfsHelper.cs" />
<Compile Include="Core\TfsInterop\WrapperFor.cs" />
<Compile Include="Core\TfsInterop\IChange.cs" />