private bool OkToGiveUp()
{
if (_commonBase.Count == 0) return false;
try
{
for (var i = _wantCommits.GetEnumerator(); i.MoveNext(); )
{
RevCommit want = i.Current;
if (WantSatisfied(want))
{
_wantCommits.Remove(want);
}
}
}
catch (IOException e)
{
throw new PackProtocolException("internal revision error", e);
}
return _wantCommits.Count == 0;
}