Find out where you fall on the Open-Source Character Alignment Chart

gitaligned

Find out where you fall on the Open-Source Character Alignment Chart

Binaries available in releases.

If you prefer to install from source, run the following in your command line (requires Go)

go get -u github.com/soypat/gitaligned

How to use (requires git)

Run gitaligned -h for help.

Running gitaligned in this repo:

gitaligned -u soypat

Output:

Author soypat is Neutral Good
Commits: 6
Accumulated:{-0.2 2}

Planned

Output:

Steve -- Chaotic Neutral (89.9% confidence)
  82 commits
  99 % Lean towards Chaotic
  10 % Lean towards Good

How it works (sort of)

For now gitaligned does some basic natural language processing using prose and has some ad-hoc rules based on typical git commit message mannerisms.

Opinions of commit messages and their alignment

Commit Message Alignment
Fixed bug Neutral Evil
Correct edge case in http response where long frames would overflow Lawful Good
Steve's parser was really bad. Optimize and now works with extended unicode Chaotic Good
Jacobian not singular True Neutral
f*cking BNF Chaotic Evil

"Good" commit messages seek to inform the reader of what changed and why.

"Evil" commit messages hide away what changed.

Author alignments on this repo

Author Alignment
soypat Chaotic Good
frenata Lawful Neutral
Owner
Patricio Whittingslow
Systems Engineer ~ Aerospace
Patricio Whittingslow
Comments
  • gitaligned always crashes

    gitaligned always crashes

    panic: runtime error: index out of range [200] with length 200
    
    goroutine 1 [running]:
    main.walkCommits(0xc0001c6000, 0xc8, 0xc8, 0x11c5a70, 0x11b793e, 0x3)
    	/home/pato/src/gitaligned/nlp.go:36 +0x5b0
    main.SetAuthorAlignments(0xc0001c6000, 0xc8, 0xc8, 0xc0001ca000, 0x2, 0x14, 0x0, 0x0)
    	/home/pato/src/gitaligned/align.go:51 +0x4f
    main.run(0xc00003e748, 0x1724320)
    	/home/pato/src/gitaligned/main.go:43 +0x2c8
    main.main()
    	/home/pato/src/gitaligned/main.go:48 +0x26
    

    I get this whether I run without parameters, or with specifying a username, or -k or -y. I've tried it against two different repos, and it dies with exactly the same error, down to the length/index values. I tried it on a third repo and got a similar result but the index/length is 55 instead. And so on.

    I've tried it on a bunch of repos and I've only gotten it to run on a handful.

    I was able to get things working by creating a dummy repo with a couple empty commits:

    git init .
    git commit --allow-empty -m "Initial commit."
    git commit --allow-empty -m "Hello, world."
    

    I also got it running against a relatively trivial repo (19 commits, 1 author, no branches/tags), and a couple other repos that are mostly forks. For some reason though, any of the repos I'm actually primary contributor on it seems to really not like.

  • Allow passing log files directly instead of scanning

    Allow passing log files directly instead of scanning

    Hi there,

    I want to try building a GUI for gitaligned to run against arbitrary projects for fun. However, cloning entire repositories just for their logs seems a little heavy-handed (even with the --bare flag). It would be nice if I could, for example, pull a list of commits from the GitHub API, massage it into the git log format and pass it to the program.

    As far as I can tell, this would only require to expose this function on the command line: https://github.com/soypat/gitaligned/blob/a37e99043f591cfad60d04dc6e329a00d632f172/gitscan.go#L92

    Hope you consider it. Thank you.

  • Allow specifying branch

    Allow specifying branch

    First of all, great idea. :)

    Second, I noticed once I ramped the -n flag up that the commit count is way higher than I expected, then I realized that the tool must be looking at all branches in the repo. Since I frequently use less than optimal commit messages while working on a branch before cleaning it up to propose a change, it'd be great to add a flag that allowed specifying the branch(s) to scan.

  • Evaluating a single commit does not seem to work

    Evaluating a single commit does not seem to work

    mshantz@kit-mshantz:~/code$ git log -1
    commit b2fb39cf3eddfef3ea23a403d1c5b42b57f0c19b (HEAD -> blast-stats, origin/blast-stats)
    Author: Mike Shantz <[email protected]>
    Date:   Wed Oct 14 10:42:54 2020 -0400
    
        Track a series of blast stats in redis.
    mshantz@kit-mshantz:~/code$ ~/gitaligned -b blast-stats -n 1
    Author Mike Shantz is True Neutral
    Commits: 0
    Accumulated:{0 0}
    mshantz@kit-mshantz:~/code$ ~/gitaligned -b blast-stats -n 1 -k
    mshantz@kit-mshantz:~/code$ ~/gitaligned -b blast-stats -n 1 -y
    Commit True Neutral
    {+0 +0}
            track a series of blast stats in redis
    

    In particular I would expect the output with -k and -y to be (respectively):

    track a series of blast stats in redis
    VB    DT NN     IN JJ    NNS   IN NN
    
    Commit Neutral Good
    {+0.225 +1}
            track a series of blast stats in redis
    

    as seen in longer outputs.

    This result was seen with v0.3.2 using the linux binary from WSL2 (Ubuntu), git version 2.25.1.

  • Crawl into directories to find multiple repositories

    Crawl into directories to find multiple repositories

    First off, this is awesome. Thank you for making the internet a better place by creating this fun tool. It made my day.

    Just as an idea, what if we could have this take a directory, and then upon not finding a .git repo, crawl into the child directories and collect commits from any it finds and analyze them together. Just thinking about that since our teams are often working across many repos. Just a thought.

    If I have some time this week, maybe I'll take a crack at it.

    😁

golang package to find the K most dominant/prominent colors in an image
golang package to find the K most dominant/prominent colors in an image

prominentcolor Find the K most dominant colors in an image The Kmeans function returns the K most dominant colors in the image, ordered in the order o

Nov 7, 2022
Easily customizable Social image (or Open graph image) generator

fancycard Easily customizable Social image (or Open graph image) generator Built with Go, Gin, GoQuery and Chromedp Build & Run Simply, Clone this rep

Jan 14, 2022
Open-in-linear - A tool provides a shortcut to opening a linear issue in the desktop app or browser

This tool provides a shortcut to opening a linear issue in the desktop app or browser.

Jan 25, 2022
code2img can generate image of source code
code2img can generate image of source code

code2img code2img can generate image of source code. This was inspired by carbon and silicon Features Doesn't need browser & Internet Copy image of so

Nov 15, 2022
Go-Generative-Art-A - Generate PNG art from source images! GOLang Generative Art
Go-Generative-Art-A - Generate PNG art from source images! GOLang Generative Art

GO Lang Generative Art Tool A Take source images and generate art utilizing sour

Nov 21, 2022
This is old and unmaintained code, ignore it. starfish is a simple, SDL based, 2D graphics and user input library for Go. If you intend to work on it, please fork from the 'devel' branch, not 'master'. Current release: 0.12.0

What is starfish? What starfish is: starfish is a simple 2D graphics and user input library for Go built on SDL. What starfish is not: While it is bui

Jun 4, 2019
An API which allows you to upload an image and responds with the same image, stripped of EXIF data

strip-metadata This is an API which allows you to upload an image and responds with the same image, stripped of EXIF data. How to run You need to have

Nov 25, 2021
A note taking app, that you can draw in, syncs to the cloud, and is on most platforms!

About NoteDraw About · How to contribute · How to run Structure Codebase Description SRC The sorce code for the client side (Go) Branches Only Ones th

Jul 11, 2022
Radius parsing in golang using gopacket. You can parse from either live traffic or from pcap of your choice.

go-radius Radius parsing in golang using gopacket. You can parse from either live traffic or from pcap of your choice. RADIUS RADIUS is an AAA (authen

Dec 1, 2022
A soothing face filter where you can appreciate the beauty but not fully identify the person.
A soothing face filter where you can appreciate the beauty but not fully identify the person.

⭐ the project to show your appreciation. ↗️ Showerglass A soothing face filter where you can appreciate the beauty but not fully identify the person.

Oct 26, 2022
TurmaFinder - Find out which class you are in this year

TurmaFinder Descubra em qual turma você está esse ano. Como saber em qual turma

Feb 15, 2022
Proto-find is a tool for researchers that lets you find client side prototype pollution vulnerability.

proto-find proto-find is a tool for researchers that lets you find client side prototype pollution vulnerability. How it works proto-find open URL in

Dec 6, 2022
elPrep: a high-performance tool for analyzing sequence alignment/map files in sequencing pipelines.
elPrep: a high-performance tool for analyzing sequence alignment/map files in sequencing pipelines.

Overview elPrep is a high-performance tool for analyzing .sam/.bam files (up to and including variant calling) in sequencing pipelines. The key advant

Nov 2, 2022
twitter clone front-end for Internet Engineering course - fall 99 built by go+echo

twitter backend build twitter-like back-end for internet engeering course - fall 99 with go+echo+gorm team mates Roozbeh Sharifnasab + Parsa Fadaee +

Nov 9, 2022
Go structure annotations that supports encoding and decoding; similar to C-style bitfields. Supports bitfield packing, self-describing layout parameters, and alignment.
Go structure annotations that supports encoding and decoding; similar to C-style bitfields. Supports bitfield packing, self-describing layout parameters, and alignment.

STRUCTure EXtensions structex provides annotation rules that extend Go structures for implementation of encoding and decoding of byte backed data fram

Oct 13, 2022
Discord Bot written in Go. Created for 'Intro to Golang', Fall 21

goDiscordBot Discord Bot written in Go. Created for 'Intro to Golang', Fall 21 Session where we coded the bot (goes over setup steps): https://gdsc.co

Nov 3, 2021
UCSD CSE 124 Fall 2021 Project 3 Starter Code

Surfstore This is the starter code for Module 3: Surfstore. Before you get started, make sure you understand the following 2 things about Go. (These w

May 15, 2022
Memory-Alignment: a tool to help analyze layout of fields in struct in memory
Memory-Alignment: a tool to help analyze layout of fields in struct in memory

Memory Alignment Memory-Alignment is a tool to help analyze layout of fields in struct in memory. Usage go get github.com/vearne/mem-aligin Example p

Oct 26, 2022
Aces is a command line utility that lets you encode any file to a character set of your choice.

Aces Any Character Encoding Set Aces is a command line utility that lets you encode any file to a character set of your choice. For example, you could

Nov 28, 2022
In 'n Out - See what goes in and comes out of PEs/DLLs

In 'n Out Parse and return PE information ino -v comsvcs.dll { "Name": "<string>", "Path": "<string>", "Type": "<string file|directory>", "Im

Dec 16, 2022