From: Marek Zawirski Date: Thu, 28 Aug 2008 02:40:22 GMT Subject: Re: [EGIT PATCH 1/3] Give NoRemoteRepositoryException better message in BasePackConnection Message-ID: <48B61016.7050401@gmail.com> In-Reply-To: <20080828023501.GC8624@spearce.org> Shawn O. Pearce wrote: (...) > + @Override > + protected TransportException noRepository() { > + // Sadly we cannot tell the "invalid URI" case from "push not allowed". > + // Opening a fetch connection can help us tell the difference, as any > + // useful repository is going to support fetch if it also would allow > + // push. So if fetch throws NoRemoteRepositoryException we know the > + // URI is wrong. Otherwise we can correctly state push isn't allowed > + // as the fetch connection opened successfully. > + // > + try { > + transport.openFetch().close(); > + } catch (NotSupportedException e) { > + // Fall through. > + } catch (NoRemoteRepositoryException e) { > + // Fetch concluded the repository doesn't exist. > + // > + return e; > + } catch (TransportException e) { > + // Fall through. > + } > + return new TransportException(uri, "push not permitted"); > + } > + Nice idea, even if it's crazy and time-consuming, it's probably better than my previous one. -- Marek Zawirski [zawir] marek.zawirski@gmail.com