iamluc / buse
Execute git command in several repositories
Requires
- php: >=5.4
- gitonomy/gitlib: ~0.1.0
- pimple/pimple: ~3.0
- symfony/console: ~2.6
- symfony/finder: ~2.6
- symfony/process: ~2.6
- symfony/property-access: ~2.6
- symfony/yaml: ~2.6
Requires (Dev)
- phpunit/phpunit: ~4.5
This package is auto-updated.
Last update: 2024-10-25 06:42:58 UTC
README
About
buse helps managing and executing git commands in several git repositories at the same time.
buse is currently 'work in progress'. Command and arguments could change.
Install
git clone https://github.com/iamluc/buse.git
cd buse
composer install
Use
bin/buse
# or if you have build the phar (see build section)
bin/buse.phar
It should display the help message. To have description of a specific command, just type:
$> bin/buse help the_command
status
Get status of your repositories
$> bin/buse status
buse: master
repo2: master / not clean (1 staged, 3 modified)
repo3: dev / not synchronized (1 ahead, 1 behind)
fetch
Fetch your repositories.
pull
Pull your repositories.
push
Push your repositories.
git
Execute a git command in your repositories.
Note:
- 'git' must not be included in the command
- you must write the command after '--'
$> bin/buse git -- log --pretty=oneline -1
buse:
xxxxxxxxxxxx Last commit message buse
repo2:
xxxxxxxxxxxx Last commit message repo2
repo3:
xxxxxxxxxxxx Last commit message repo3
exec
Execute a command in your repositories.
Note:
- you must write the command after '--'
$> bin/buse exec -- composer install
buse: | Loading composer repositories with package information
tag
Get and create tags.
clone
Clone repositories. This command needs a configuration file .buse.yml
config
Get and set configuration.
To exclude repositories, update your config typing:
$> bin/buse config "global.ignore_repositories" "repo1,repo2"
Configuration
Buse will check if a file .buse.yml
exists in the current directory.
Note: You can use the --config
(ie. buse status --config ~/my-dir
) option to change the directory of the config file.
A basic .buse.yml
looks like:
global: ignore_repositories: - workshop-serializer-todo - twgit datatheke: repositories: datatheke: 'git@github.com:datatheke/datatheke.git' datatheke-cli: 'git@github.com:datatheke/datatheke-cli.git' buse: repositories: buse: 'git@github.com:iamluc/buse.git' other: repositories: super-project: ~
The global
section contains the global configuration of buse.
Others sections are called "groups".
If there are "groups" defined in the config file, buse will execute the command for all repositories defined in groups.
But if buse is called with the --group
option (ie. buse status --group datatheke --group buse
),
the command will be executed only for the repositories defined in the selected groups.
Without any "groups" found, buse will search for all git repositories in the working directory.
Even with "groups" in the config file, you can force the search mode using the --no-group
option.
Build
composer install --no-dev bin/compile