private IFetchResult FetchRemote(IGitTfsRemote tfsRemote, bool stopOnFailMergeCommit, bool createBranch = true, IRenameResult renameResult = null, int startingChangesetId = -1)
{
try
{
Trace.WriteLine("Try fetching changesets...");
var fetchResult = tfsRemote.Fetch(stopOnFailMergeCommit, renameResult: renameResult);
Trace.WriteLine("Changesets fetched!");
if (fetchResult.IsSuccess && createBranch && tfsRemote.Id != GitTfsConstants.DefaultRepositoryId)
{
Trace.WriteLine("Try creating the local branch...");
var branchRef = tfsRemote.Id.ToLocalGitRef();
if (!_globals.Repository.HasRef(branchRef))
{
if (!_globals.Repository.CreateBranch(branchRef, tfsRemote.MaxCommitHash))
Trace.TraceWarning("warning: Fail to create local branch ref file!");
else
Trace.WriteLine("Local branch created!");
}
else
{
Trace.TraceInformation("info: local branch ref already exists!");
}
}
return fetchResult;
}
finally
{
Trace.WriteLine("Cleaning...");
tfsRemote.CleanupWorkspaceDirectory();
}
}