Don't discard walker based fetch error information
commit6ff9c0dc5eb3ff72602ce3553c7a760f130f9c58
authorShawn O. Pearce <spearce@spearce.org>
Sun, 11 May 2008 18:59:45 +0000 (11 14:59 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 11 May 2008 19:12:45 +0000 (11 15:12 -0400)
tree77153f1b339db5c1cc8e71e3785cb4fe5bee52c0
parentb3b088e32f2e7061a0eb7824d0fd003638508203
Don't discard walker based fetch error information

If a protocol error happens that prevents us from obtaining an object
we need to report that to the end-user, so they can take action to fix
the problem.  This is also the case of a local disk full error; if we
cannot write to the local repository's object database the user must
be informed so they can correct the problem.

Some parts of the WalkFetchConnection were ignoring IOException in the
hope that we could silently mask the error by fetching the same object
from another source, such as a pack file or an alternate repository. Not
all errors however will be correctable by looking at another location so
we need to collect them and report the problems we had if we could not
fetch the object locally.

Since multiple errors may be related to the fetch failure we need to
collect them up into a CompoundException, allowing the UI level get
that and report the complete list of errors to the end-user.  This is
easily possible if we failed to not only read the object as a loose
object but also failed to obtain a pack file index to search for the
object within that pack.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.spearce.jgit/src/org/spearce/jgit/errors/CompoundException.java [new file with mode: 0644]
org.spearce.jgit/src/org/spearce/jgit/transport/WalkFetchConnection.java