This series adds support to jgit to list commonly used subcommands if the user just executes `jgit` with no subcommand requested: $ jgit jgit --git-dir GIT_DIR --help (-h) --show-stack-trace command [ARG ...] The most commonly used commands are: fetch Update remote refs from another repository log View commit history push Update remote repository from local refs tag Create a tag Commands inside of the pgm.debug package are automatically given the debug- prefix, allowing debug-show-commands to be used to show the command table. Commands must be listed in the META-INF/services/org...TextBuiltin file in order to be considered for execution. This means that we must add (or remove) command class names from the listing each time we introduce or remove a command line subcommand. One advantage to this structure is additional commands can defined in other packages, and are available so long as the classes are reachable through the CLASSPATH. Since jgit.sh hardcodes the CLASSPATH to only itself this is not fully supported yet, but does open the door for users to extend jgit's command line support. Shawn O. Pearce (9): Switch jgit.pgm to J2SE-1.5 execution environment Remove unnecessary duplicate if (help) test inside TextBuiltin Create an optional documentation annotation for TextBuiltin Create a lightweight registration wrapper for TextBuiltin Create a catalog of CommandRefs for lookup and enumeration Document some common commands with the new Command annotation Include commonly used commands in main help output Refactor SubcommandHandler to use CommandCatalog instead of reflection Add debug-show-commands to display the command table org.spearce.jgit.pgm/.classpath | 2 +- .../services/org.spearce.jgit.pgm.TextBuiltin | 14 ++ .../src/org/spearce/jgit/pgm/Command.java | 72 ++++++++ .../src/org/spearce/jgit/pgm/CommandCatalog.java | 188 ++++++++++++++++++++ .../src/org/spearce/jgit/pgm/CommandRef.java | 158 ++++++++++++++++ .../src/org/spearce/jgit/pgm/Fetch.java | 1 + .../src/org/spearce/jgit/pgm/Log.java | 1 + .../src/org/spearce/jgit/pgm/Main.java | 18 ++ .../src/org/spearce/jgit/pgm/Push.java | 1 + .../src/org/spearce/jgit/pgm/Tag.java | 1 + .../src/org/spearce/jgit/pgm/TextBuiltin.java | 17 +-- .../org/spearce/jgit/pgm/debug/ShowCommands.java | 78 ++++++++ .../spearce/jgit/pgm/opt/SubcommandHandler.java | 65 +------ 13 files changed, 543 insertions(+), 73 deletions(-) create mode 100644 org.spearce.jgit.pgm/src/META-INF/services/org.spearce.jgit.pgm.TextBuiltin create mode 100644 org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Command.java create mode 100644 org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/CommandCatalog.java create mode 100644 org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/CommandRef.java create mode 100644 org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/debug/ShowCommands.java -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html