Jenkins : Git plugin rewrite plans

Done

  • Polling without a workspace should be built in - this won't be possible in all circumstances, but when just polling against a specific branch, it should be. DONE using ls-remote

Work in progress

  • Make sure every string config value is parameterizable.

Todo...

  • Abstract away the git decision-making logic into a separate library, for reuse elsewhere and to allow for other possible implementations.
  • Support for multiple local git repositories, probably in optional "module" subdirectories along the same lines as the subversion plugin.
  • Don't default to ** for the branch spec any more - that causes confusion. Instead, use the remote's HEAD.
  • Trim config options - what's actually being used? What actually matters? We've got a lot of cruft there that makes the UI cluttered.
    • Use author rather than committer by default, and wait to implement the config option to flip this until we see if there's actual demand.
    • Eliminate "wipe out workspace" - this shouldn't actually be needed.
    • Eliminate the "skip internal tag" option, since we'll get rid of the internal tag in the first place.
    • user.name and user.email will only be global config options.
    • "Unique SCM name" should no longer be needed, if we implement the multiple local repos behavior correctly.
  • Continue supporting the build chooser extension point, though new implementations will be needed for other plugins.
  • Possibly cache the remote repository on the master to speed up cloning/fetching/polling/etc.
  • Make sure there's a migration path from the old git plugin to the new one, but don't necessarily require 100% compatibility. This is a new plugin, not a new version of the old one.