A library to aggregate git branches from different remotes into a consolidated one
Project description
git-aggregator
Manage the aggregation of git branches from different remotes to build a consolidated one.
Configuration file
Create a repos.yaml or repos.yml file:
./product_attribute:
remotes:
oca: https://github.com/OCA/product-attribute.git
acsone: git+ssh://git@github.com/acsone/product-attribute.git
merges:
- oca 8.0
- oca refs/pull/105/head
- oca refs/pull/106/head
target: acsone aggregated_branch_name
./connector-interfaces:
remotes:
oca: https://github.com/OCA/connector-interfaces.git
acsone: https://github.com/acsone/connector-interfaces.git
merges:
- oca 6054de2c4e669f85cec380da90d746061967dc83
- acsone 8.0-connector_flow
- acsone 80_connector_flow_ir_cron_able-lmi
- acsone 8.0_connector_flow_improve_eval_config
target: acsone aggregated_branch_name
fetch_all:
- oca
Environment variables inside of this file will be expanded if the proper option is selected.
Fetching only required branches
If any of your merges refer to a specific commit, you will probably need to fetch all remotes from the corresponding remote or use any other strategy to get that fetch working, but we recommend to simply add this like in the example above:
fetch_all:
- oca
- other-remote
You can specify that you want to fetch all references from all remotes you have defined with:
fetch_all: true
Shallow repositories
To save big amounts of bandwidth and disk space, you can use shallow clones. These download only a restricted amount of commits depending on some criteria. Available options are depth, shallow-since and shallow-exclude.
You can use those in the defaults sections to apply them everywhere, or specifying them in the corresponding merges section, for which you must use the dict alternate construction. If you need to disable a default in merges, set it to false:
./odoo:
defaults:
depth: 20
remotes:
odoo: https://github.com/odoo/odoo.git
ocb: https://github.com/OCA/OCB.git
acsone: https://github.com/acsone/odoo.git
merges:
-
remote: ocb
ref: "9.0"
depth: 1000
-
remote: odoo
ref: refs/pull/14859/head
target: acsone 9.0
Remember that you need to fetch at least the common ancestor of all merges for it to succeed.
Triggers
It’s also possible to specify a command or a list of shell commands to execute after the aggregation (and before the push). The commands are executed into the aggregated directory.
./product_attribute:
remotes:
oca: https://github.com/OCA/product-attribute.git
acsone: git+ssh://git@github.com/acsone/product-attribute.git
merges:
- oca 8.0
target: acsone aggregated_branch_name
shell_command_after: echo 'my command'
./connector-interfaces:
remotes:
oca: https://github.com/OCA/connector-interfaces.git
acsone: https://github.com/acsone/connector-interfaces.git
merges:
- oca 9.0
target: acsone aggregated_branch_name
shell_command_after:
- echo 'a first command'
- echo 'a second command'
Command line Usage
Following the example repos.yaml file from above, aggregate your repositories at any time:
$ gitaggregate -c repos.yaml
Expand environment variables inside of the configuration file when loading:
$ gitaggregate -c repos.yaml --expand-env
You can also aggregate and automatically push the result to the target:
$ gitaggregate -c repos.yaml -p
Only aggregate a specific repository using fnmatch:
$ gitaggregate -c repos.yaml -p -d connector-interfaces
Changes
1.2.0 (May, 17, 2017)
support .yml config file extension
add a show-closed-prs command to display github pull requests that are not open anymore; github pull requests must be referenced as refs/pull/NNN/head in the merges section
1.1.0 (Feb, 01, 2017)
Use setuptools_scm for the release process (https://github.com/acsone/git-aggregator/pull/10)
Expand env vars in config. (https://github.com/acsone/git-aggregator/pull/8)
Shallow repositories. (https://github.com/acsone/git-aggregator/pull/7)
Fetch only required remotes. (https://github.com/acsone/git-aggregator/pull/6)
Display readable error if config file not found. (https://github.com/acsone/git-aggregator/pull/2)
1.0.0 (Jan, 19, 2016)
First release
Credits
Contributors
Cyril Gaudin (camptocamp)
Jairo Llopis (Tecnativa)
Stéphane Bidoul (ACSONE)
Dave Lasley (LasLabs)
Maintainer
This project is maintained by ACSONE SA/NV.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file git-aggregator-1.2.0.tar.gz
.
File metadata
- Download URL: git-aggregator-1.2.0.tar.gz
- Upload date:
- Size: 31.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99b9b8ea181b3e8c41fbc58c29fb1e1d65f73b922fbbb8150eb0e61c69906fd4 |
|
MD5 | 482d281607f37b259705cff2f127fd0c |
|
BLAKE2b-256 | 59cfad87891babfed76856cb2c4fa6bc98184bb6e54efd11c9892d5d1827327e |
File details
Details for the file git_aggregator-1.2.0-py2.py3-none-any.whl
.
File metadata
- Download URL: git_aggregator-1.2.0-py2.py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0fc455c7ce0abdfbb51e731870c26fe2ee709cb9ff0e7fdaa187d3dc83a2d96 |
|
MD5 | 904111f0a806e71d88aaae8d3f9f6873 |
|
BLAKE2b-256 | 91845288d6fd549fc7aed370097d8719285f4c71b5a8c76e84ca197688bdfdd4 |