Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/honza/ggl

global git log
https://github.com/honza/ggl

Last synced: about 5 hours ago
JSON representation

global git log

Awesome Lists containing this project

README

        

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