public override void Add(RevCommit c)
		{
			DateRevQueue.Entry q = head;
			long when = c.commitTime;
			DateRevQueue.Entry n = NewEntry(c);
			if (q == null || when > q.commit.commitTime)
			{
				n.next = q;
				head = n;
			}
			else
			{
				DateRevQueue.Entry p = q.next;
				while (p != null && p.commit.commitTime > when)
				{
					q = p;
					p = q.next;
				}
				n.next = q.next;
				q.next = n;
			}
		}
		private void FreeEntry(DateRevQueue.Entry e)
		{
			e.next = free;
			free = e;
		}
		public override void Clear()
		{
			head = null;
			free = null;
		}
		private DateRevQueue.Entry NewEntry(RevCommit c)
		{
			DateRevQueue.Entry r = free;
			if (r == null)
			{
				r = new DateRevQueue.Entry();
			}
			else
			{
				free = r.next;
			}
			r.commit = c;
			return r;
		}
		internal override RevCommit Next()
		{
			DateRevQueue.Entry q = head;
			if (q == null)
			{
				return null;
			}
			head = q.next;
			FreeEntry(q);
			return q.commit;
		}