Merge pull request #625 from pmiossec/perfs_get_last_changeset_id
Perfs get last changeset id
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user