Made TFS interfaces match their original types a little better.
This commit is contained in:
@@ -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,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,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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user