Merge pull request #625 from pmiossec/perfs_get_last_changeset_id

Perfs get last changeset id
This commit is contained in:
Philippe Miossec
2014-07-10 15:43:04 +02:00
4 changed files with 30 additions and 12 deletions
+13 -3
View File
@@ -640,16 +640,26 @@ namespace Sep.Git.Tfs.VsCommon
return _bridge.Wrap<WrapperForIdentity, Identity>(Retry.Do(() => GroupSecurityService.ReadIdentity(SearchFactor.AccountName, username, QueryMembership.None)));
}
public ITfsChangeset GetLatestChangeset(IGitTfsRemote remote)
public Changeset GetLatestChangeset(IGitTfsRemote remote, bool includeChanges)
{
var history = VersionControl.QueryHistory(remote.TfsRepositoryPath, VersionSpec.Latest, 0,
RecursionType.Full, null, null, VersionSpec.Latest, 1, true, false,
RecursionType.Full, null, null, VersionSpec.Latest, 1, includeChanges, false,
false).Cast<Changeset>().ToList();
if (history.Empty())
throw new GitTfsException("error: remote TFS repository path was not found");
return BuildTfsChangeset(history.Single(), remote);
return history.Single();
}
public ITfsChangeset GetLatestChangeset(IGitTfsRemote remote)
{
return BuildTfsChangeset(GetLatestChangeset(remote, true), remote);
}
public int GetLatestChangesetId(IGitTfsRemote remote)
{
return GetLatestChangeset(remote, false).ChangesetId;
}
public IChangeset GetChangeset(int changesetId)
+5
View File
@@ -68,6 +68,11 @@ namespace Sep.Git.Tfs.VsFake
return _script.Changesets.LastOrDefault().Try(x => BuildTfsChangeset(x, remote));
}
public int GetLatestChangesetId(IGitTfsRemote remote)
{
return _script.Changesets.LastOrDefault().Id;
}
public IEnumerable<ITfsChangeset> GetChangesets(string path, long startVersion, IGitTfsRemote remote)
{
if (!_script.Changesets.Any(c => c.IsBranchChangeset) && _script.Changesets.Any(c => c.IsMergeChangeset))
+11 -9
View File
@@ -585,7 +585,7 @@ namespace Sep.Git.Tfs.Core
private IEnumerable<ITfsChangeset> FetchChangesets()
{
// TFS 2010 doesn't like when we ask for history past its last changeset.
if (MaxChangesetId == GetLatestChangeset().Summary.ChangesetId)
if (MaxChangesetId == GetLatestChangesetId())
return Enumerable.Empty<ITfsChangeset>();
if(!IsSubtreeOwner)
@@ -603,15 +603,17 @@ namespace Sep.Git.Tfs.Core
private ITfsChangeset GetLatestChangeset()
{
if (!string.IsNullOrEmpty(this.TfsRepositoryPath))
{
if (!string.IsNullOrEmpty(TfsRepositoryPath))
return Tfs.GetLatestChangeset(this);
}
else
{
var changesetId = globals.Repository.GetSubtrees(this).Select(x => Tfs.GetLatestChangeset(x)).Max(x => x.Summary.ChangesetId);
return GetChangeset(changesetId);
}
var changesetId = globals.Repository.GetSubtrees(this).Select(x => Tfs.GetLatestChangeset(x)).Max(x => x.Summary.ChangesetId);
return GetChangeset(changesetId);
}
private int GetLatestChangesetId()
{
if (!string.IsNullOrEmpty(TfsRepositoryPath))
return Tfs.GetLatestChangesetId(this);
return globals.Repository.GetSubtrees(this).Select(x => Tfs.GetLatestChangesetId(x)).Max();
}
public void UpdateTfsHead(string commitHash, long changesetId)
+1
View File
@@ -18,6 +18,7 @@ namespace Sep.Git.Tfs.Core.TfsInterop
ICheckinNote CreateCheckinNote(Dictionary<string, string> checkinNotes);
IIdentity GetIdentity(string username);
ITfsChangeset GetLatestChangeset(IGitTfsRemote remote);
int GetLatestChangesetId(IGitTfsRemote remote);
ITfsChangeset GetChangeset(int changesetId, IGitTfsRemote remote);
IChangeset GetChangeset(int changesetId);
bool HasShelveset(string shelvesetName);