# App::Multigit This module allows you to run commands against a set of git modules in the same directory. It works like git submodules, except you don't actually have to deal with git submodules. It ships with a single command, `mg`, which dispatches to all the configured modules in the directory. A file `.mgconfig` uses standard INI format to list the relevant modules: [https://github.com/Author/Some-Module.git] confkey=val [https://github.com/Author/Some-Other-Module.git] [ssh://my-git-server/Local-Module.git] The repository's URL is the key to the section in the INI format. The `dir` key can be used to specify its location: [https://github.com/Author/Some-Module] dir=alternative-location By default, the final path part of the URL is used, minus the `.git` extension. The module `App::Multigit` itself provides an interface into this config. See the POD for details. ## Commands Commands are created like with git itself; the file `mg-$cmd` should exist and be executable. The command is run: mg-command --workdir /absolute/directory/name/ This is the only interface between you and App::Multigit. For any other behaviour, simply use App::Multigit inside your script. `mg` itself is only a thin wrapper. It checks the environment and then execs the above. The command itself is required to do whatever it needs to do. Commonly, the command will almost certainly want to run a git command for each repository and deal with the results. The examples do this by means of `App::Multigit::each` and an `IO::Async::Process` object. The `mg-branch` example simply blurts back the output from a git command run on each repository; the `mg-closes` example is more involved, only reporting those repositories for which the output is relevant. ## Help The usage string of `mg` is accessed by running `mg` on its own, or `mg help`. Running `mg help command` simply execs `mg-command --help`, so each command should understand the help option and implement it. The POD for `App::Multigit` will give you more information about how to actually use the interface to write a command.