We were maxed out on private repositories on GitHub. (Platinum plan: 200$/month, 125 private repo)
Just pay more and move on.
Track the creation rate over time.
bskyb-repo-activity.lst
Tip #70 (last): "Sign your work".
## Motivation ## Maintainers ## Contributing (optional)
require 'octokit' require 'date' class RepoActivity def initialize @client = Octokit::Client.new(auto_paginate: true, access_token: ENV['MY_GITHUB_TOKEN']) end def liveliness(repo) stats = @client.commit_activity_stats(repo.full_name) cached = @client.last_response.status == 200 if stats && cached stats.reduce(0) { |a, e| a + e[:total] } else -1 end end def print_activity repos = @client.org_repos('sky-uk', type: 'private') h = {} # loop_while -> { h.has_value?(-1) } do h = Hash[repos.map { |r| [r, liveliness(r)] }] h.each do |k, v| # retry once (github cache warmed-up) h[k] = liveliness(k) if v == -1 end # end h.each do |k, v| puts format('%s %s %-32s %d', k.created_at.to_date.iso8601, k.pushed_at.to_date.iso8601, k.name, v) end end end RepoActivity.new.print_activity
BEGIN { cmd="date +%s" cmd | getline today close(cmd) } { cmd="date -jf \"%Y-%m-%d\" \""$2"\" +%s" cmd | getline d close(cmd) age= (today - d) / 3600 / 24 if ($4 == 0) print $3 > "not-pushed-for-1y.lst" else if (age > 182 && $4 < 50) print $3 > "old-and-low-activity.lst" else printf "%-32s\t%4d\t%5d\n", $3, -age, $4 }
(right click > open image to make it interactive)
The making of this presentation is potentially more interesting than the result, if you are interested, I can show it to you.