using System;
using System.Globalization;
namespace LibGit2Sharp
{
///
/// Represents a local reference data from a remote repository which
/// has been retreived through a Fetch process.
///
internal class FetchHead : ReferenceWrapper
{
///
/// Needed for mocking purposes.
///
protected FetchHead()
{ }
internal FetchHead(
Repository repo,
string remoteCanonicalName,
string url,
ObjectId targetId,
bool forMerge,
int index)
: base(repo,
new DirectReference(string.Format(CultureInfo.InvariantCulture,
"FETCH_HEAD[{0}]",
index),
repo,
targetId),
r => r.CanonicalName)
{
Url = url;
ForMerge = forMerge;
RemoteCanonicalName = remoteCanonicalName;
}
///
/// Returns "FETCH_HEAD[i]", where i is the index of this fetch head.
///
protected override string Shorten()
{
return CanonicalName;
}
///
/// Gets the canonical name of the reference this
/// points to in the remote repository it's been fetched from.
///
public virtual string RemoteCanonicalName { get; private set; }
///
/// Gets the that this fetch head points to.
///
public virtual GitObject Target
{
get { return TargetObject; }
}
///
/// The URL of the remote repository this
/// has been built from.
///
public virtual String Url { get; private set; }
///
/// Determines if this fetch head entry has been explicitly fetched.
///
public virtual bool ForMerge { get; private set; }
}
}