What if we named the system properties:

  org.eclipse.jgit.config.core.streamFileThreshold

? Then you can write the conversion code for fromSystemProperties() as:

  Config cfg = new Config();
  ... loop through system properties
  ... if name starts with "org.eclipse.jgit.config."
  ... split remainder on first dot, set string value
  fromConfig(cfg);

That way the user can set any property using the -Dorg.eclipse.jgit.config.section.name=value flag syntax. FWIW I have a special version of Config that parses JSON and converts it to a Config object so I can configure JGit via JSON. Works nicely. I'm thinking the same sort of idea here, construct a Config from a properties collection.