ggl --- global git log ====================== This tool shows you a log of git commits from multiple repositories ordered by time. The output is nearly identical to the default `git-log`. features -------- The goal of this tool is to discover a commit that broke things, and as such, we use `--topo-order` when presenting the results. This means that a merge commit is followed by all of its children before other commits are shown. You can ask `ggl` to run `git fetch` for you. You can specify which paths you care about in busy repository with filters. By default, we go 1 week into the past, and of course you can set your own value. install ------- ### cargo ``` sh $ cargo install ggl ``` ### from source ``` sh $ git clone https://github.com/honza/ggl $ cd ggl $ cargo build --release $ ./target/release/ggl --help ``` config ------ A yaml file which specifies which repositories you want to include, and their respective remotes and branches. A `block` is a collection of repositories that share a common root directory. When running `git fetch` we use the `remote` and `branch` information. By default, we don't run `git fetch`: you have to pass in the `--fetch` flag. If you never wish to fetch a repo, you can say so in the config. ``` yaml blocks: - root: /home/abc/code repositories: - name: "linux" path: "linux" remote: "upstream" branch: "master" fetch: true filters: - filter_type: Include paths: - src/important-file.txt ``` `ggl` will look for the config file in the following places: 1. `--config` flag 2. `$XDG_CONFIG_HOME/ggl.yaml` 3. `config.yaml` in the current directory usage ----- ``` ggl USAGE: ggl [FLAGS] [OPTIONS] FLAGS: -f, --fetch Run git fetch -h, --help Prints help information -j, --json Print JSON -r, --reverse Reverse the result -V, --version Prints version information OPTIONS: -c, --config Path to config file -u, --until How far into the past should we go? e.g. 2022-12-31; defaults to one week ago ``` license ------- GPLv3 or later