Patch Set 3: I would prefer that you didn't submit this

I think you could keep this proto implementation but switch the enum to a static class without losing any of the cleaned up logic. At least with a class, there's a possibility that it will be used as the refactored class for JGit and we're setting the bar for an open, rather than closed, set at this point.

So I'd suggest:

private static class Protocol {
  private static final SSH = new Protocol("ssh",true,true...);
  private static final FILE = new Protocol("file",true)... { @overrides ... }
}

This may subsequently evolve to an abstract class and concrete subclasses instead of on-the-fly inner classes, but I think stays true to this initial goal of the tidy up.