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 <config> Path to config file
-u, --until <until> How far into the past should we go? e.g. 2022-12-31; defaults to one week ago
```
license
-------
GPLv3 or later