Gitting Git Commits For Your Work Journal

Problem

You've finished work for the day, and you'd like a list of URLs to send your boss of your commits.

Solution

Use gitYesterday! Using node.js spawn and moment.js, we create permalink URLs to our commits on Github.

GH stores commits as URL/sha_commit_id

Get the start of yesterday using moment().subtract(1, "days").startOf("day").toString();

Spawn a child process (like Alien) using spawn:

const gitLog = spawn("git", [
    "log",
    `--after=${START_OF_DAY}`,
    `--before=${END_OF_DAY}`,
    `--author=${AUTHOR}`,
  ]);

When the child expulses up some data, we can log it:

gitLog.stdout.on("data", (data) => {
    const commits = data.toString().split("\n\n\n");

    commits.forEach((commit) => {
      ...
      const hash = commitLine.split(" ")[1];
      const url = createGHURL(hash);
      ...
    });
  });

Finally, we capture any exit codes, so we don't have to kill -9 anything we don't want to (again, like Alien).

var cleanExit = function () {
    process.exit();
  };
  
  process.on("SIGINT", cleanExit); // catch ctrl-c
  process.on("SIGTERM", cleanExit); // catch kill

Note! this must be run in the repo that has the .git folder

Result

Ohhhhh yeah, that's nice. Unlike Alien.

Commits from **Sun Jul 24 2022 00:00:00 GMT-0500** to **Sun Jul 24 2022 23:59:59 GMT-0500** for **Bram Adams** from [**bramses/gitLastDay**](https://github.com/bramses/gitLastDay/)
Running: git log --after=Sun Jul 24 2022 00:00:00 GMT-0500 --before=Sun Jul 24 2022 23:59:59 GMT-0500 --author=Bram Adams
[this is an example](https://github.com/bramses/gitLastDay/commit/caf9d4dfc0fb3ea29f73e80a991a5defd43cc3af)

nb: do not go to that SHA!

Extra Credit

Turn the executable into an Alfred script!

Read These Next

Why I use the Head of Leda everywhere

Short answer: I like it. Longer answer...

80 Projects in (80 - 28) Weeks

A look back on how I created 80 unique projects in 2020.

Why does tech do this to grownups

A shared delusion is still a delusion

Stay in Touch

Each week, I send out something that looks like this. Sign up below if you want in!