private void MarkTreeComplete(RevObject tree)
{
if (tree.has(COMPLETE)) return;
tree.add(COMPLETE);
_treeWalk.reset(tree);
while (_treeWalk.next())
{
FileMode mode = _treeWalk.getFileMode(0);
int sType = mode.Bits;
switch (sType)
{
case Constants.OBJ_BLOB:
_treeWalk.getObjectId(_idBuffer, 0);
_revWalk.lookupAny(_idBuffer, sType).add(COMPLETE);
continue;
case Constants.OBJ_TREE:
{
_treeWalk.getObjectId(_idBuffer, 0);
RevObject o = _revWalk.lookupAny(_idBuffer, sType);
if (!o.has(COMPLETE))
{
o.add(COMPLETE);
_treeWalk.enterSubtree();
}
continue;
}
default:
if (FileMode.GitLink.Equals(sType))
continue;
_treeWalk.getObjectId(_idBuffer, 0);
throw new CorruptObjectException("Invalid mode " + mode + " for " + _idBuffer.Name + " " +
_treeWalk.getPathString() + " in " + tree.Name);
}
}
}