4 releases (2 breaking)

0.3.1 Nov 17, 2022
0.3.0 Nov 17, 2022
0.2.0 Nov 16, 2022
0.1.0 Nov 16, 2022

#125 in #fetch

GPL-3.0-or-later

7.5MB
356 lines

Contains (ELF exe/lib, 14MB) ggl

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

$ cargo install ggl

from source

$ 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.

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

Dependencies

~14–26MB
~383K SLoC