private void Process(ObjectId id)
{
RevObject obj;
try
{
RevObject ro = (id as RevObject);
if (ro != null)
{
obj = ro;
if (obj.has(COMPLETE))
return;
_revWalk.parseHeaders(obj);
}
else
{
obj = _revWalk.parseAny(id);
if (obj.has(COMPLETE))
return;
}
}
catch (IOException e)
{
throw new TransportException("Cannot Read " + id.Name, e);
}
obj.DisposeBody();
switch (obj.Type)
{
case Constants.OBJ_BLOB:
ProcessBlob(obj);
break;
case Constants.OBJ_TREE:
ProcessTree(obj);
break;
case Constants.OBJ_COMMIT:
ProcessCommit(obj);
break;
case Constants.OBJ_TAG:
ProcessTag(obj);
break;
default:
throw new TransportException("Unknown object type " + id.Name + " (" + obj.Type + ")");
}
_fetchErrors.Remove(id.Copy());
}