Re: [EGIT PATCH 1/3] Give NoRemoteRepositoryException better message in BasePackConnection
- From
- Marek Zawirski <marek.zawirski@gmail.com>
- Date
- Aug 28, 2008, 02:40 UTC
- Message-ID
- <48B61016.7050401@gmail.com>
- In-Reply-To
- <20080828023501.GC8624@spearce.org>
Shawn O. Pearce wrote: (...)
Show 23 quoted lines
> + @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