private ActionResult GetInfoRefs(String project, String service)
{
Response.StatusCode = 200;
Response.ContentType = String.Format("application/x-{0}-advertisement", service);
SetNoCache();
Response.Write(FormatMessage(String.Format("# service={0}\n", service)));
Response.Write(FlushMessage());
var directory = GetDirectoryInfo(project);
if (GitSharp.Repository.IsValid(directory.FullName, true))
{
using (var repository = new GitSharp.Repository(directory.FullName))
{
if (String.Equals("git-receive-pack", service, StringComparison.InvariantCultureIgnoreCase))
{
using (var pack = new ReceivePack(repository))
{
pack.SendAdvertisedRefs(new RefAdvertiser.PacketLineOutRefAdvertiser(new PacketLineOut(Response.OutputStream)));
}
}
else if (String.Equals("git-upload-pack", service, StringComparison.InvariantCultureIgnoreCase))
{
using (var pack = new UploadPack(repository))
{
pack.SendAdvertisedRefs(new RefAdvertiser.PacketLineOutRefAdvertiser(new PacketLineOut(Response.OutputStream)));
}
}
}
return new EmptyResult();
}
else
{
return new HttpNotFoundResult();
}
}