Skip to content

Instantly share code, notes, and snippets.

@mcwhittemore
Last active February 2, 2016 16:09
Show Gist options
  • Save mcwhittemore/e0316aa037d6c68f9bbe to your computer and use it in GitHub Desktop.
Save mcwhittemore/e0316aa037d6c68f9bbe to your computer and use it in GitHub Desktop.
var history = [];
try{
history = require(process.cwd()+'/.git/past-branches.json');
}
catch(err) {}
var now = Date.now();
var second = 1000;
var minute = 60 * second;
var hour = minute * 60;
var day = hour * 24;
history.forEach(function(row) {
var change = now - row[1];
if(change > day) {
console.log('*', row[0], 'last checked out', Math.floor(change/day), 'day(s) ago')
}
else if(change > hour) {
console.log('*', row[0], 'last checked out', Math.floor(change/hour), 'hour(s) ago')
}
else if(change > minute) {
console.log('*', row[0], 'last checked out', Math.floor(change/minute), 'minute(s) ago');
}
else {
console.log('*', row[0], 'last checked out', Math.floor(change/second), 'second(s) ago');
}
});
#!/usr/bin/env node
var exec = require('child_process').exec;
var fs = require('fs');
var path = require('path');
var jsonPath = path.join(__dirname, '..', 'past-branches.json');
var now = Date.now();
exec('git branch --contains '+process.argv[2], function(err, stdout, stderr) {
if(err) {
console.error(stderr);
}
else {
var branches = stdout.replace(/\* /, '').replace(/ /g, '').split('\n').filter(function(b) {
return b !== '';
});
if(branches.length === 1) {
var branch = branches[0];
var past;
try{ past = require(jsonPath); } catch(err) { past = []}
past = past.filter(function(old) {
return old[0] !== branch;
});
past.push([branch, now]);
fs.writeFile(jsonPath, JSON.stringify(past, null, 2)+'\n', function(err) {
if(err) {
console.error('post-checkout can\'t write to past-branches');
}
});
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment