gg:   git git
1 What?
2 Why?
2.1 Problem!
2.2 Solution?
3 Compatibility
8.12

gg: git git🔗ℹ

Siraaj Khandkar <siraaj@khandkar.net>

 (require gg) package: gg

A tool to git all your gits and answer the age-old question: "Where my gits at?"

1 What?🔗ℹ

gg searches your hard drive for git repositories and outputs some data about their locations and state (roots, heads, remotes, etc.).

Can output data in the following formats:
  • directory tree index

  • DOT (for Graphviz)

  • serialized (for later re-consumption)

Putting that data into a git repository itself and then repeating the same process on all your machines, will give you a catalogue of all your repos and show their relationships.

2 Why?🔗ℹ

2.1 Problem!🔗ℹ

2.2 Solution?🔗ℹ

So, how to be sure everything is in sync?

  1. Find all the repos and confirm what is a fork of what (sharing an ancestor);

  2. Compare their status to understand what is out of date;

  3. Decide what should be pruned, moved, updated or whatever;

  4. GOTO 1

gg is mainly motivated by 1, but also aims to be useful for 2.

See the example meta-repo in gg’s source repo.

3 Compatibility🔗ℹ

Due to a dependency on the Unix find utility, only Unix-like operating systems are currently supported and the only ones I’ve tested gg on are:

This dependency isn’t strictly necessary, it’s just much faster than Racket’s find-files. I’ll eventually get around to adding a fallback on find-files when system find isn’t available.