Skip to content

Commit 352f361

Browse files
committed
Add git history manipulation helper.
1 parent 69dba91 commit 352f361

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

coder-apps/common/vcs/app/git.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ Git.prototype.commit_tree = function(/* tree, message, parents, options, callbac
176176
Git.prototype.rev_parse = function(rev, callback) {
177177
var result = null;
178178

179-
var child = this.git("rev-parse", [rev], function(err) {
179+
var child = this.git("rev-parse", rev, function(err) {
180180
if (err) callback(err, null);
181181
else callback(null, result);
182182
});

coder-apps/common/vcs/app/gitapp.js

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
"use strict";
12
var async = require("async");
23
var util = require("util");
34
var Git = require("./git");
@@ -12,11 +13,11 @@ var GitApp = exports = function(name, rev) {
1213
this.repo = null;
1314
this.tree = null;
1415
this.module = null;
15-
}
16+
};
1617

1718
util.inherits(GitApp, App);
1819

19-
GitApp.appcache = {}
20+
GitApp.appcache = {};
2021

2122
GitApp.prototype.load = function(callback) {
2223
var self = this;
@@ -35,7 +36,7 @@ GitApp.prototype.load = function(callback) {
3536
callback(null);
3637
}
3738
], callback);
38-
}
39+
};
3940

4041
GitApp.prototype.require = function(callback) {
4142
var self = this;
@@ -61,7 +62,7 @@ GitApp.prototype.require = function(callback) {
6162
callback(null, m);
6263
}
6364
], callback);
64-
}
65+
};
6566

6667
GitApp.find = function(name, rev, callback) {
6768
callback = callback || function() {};
@@ -81,5 +82,34 @@ GitApp.find = function(name, rev, callback) {
8182
callback(null, userapp);
8283
}
8384
});
84-
}
85+
};
86+
87+
GitApp.history = function(name, callback) {
88+
var repo;
89+
async.waterfall([
90+
LocalApp.find.bind(null, name),
91+
function(localApp, callback) {
92+
repo = new Git(localApp.rootPath);
93+
repo.rev_parse("HEAD", callback);
94+
},
95+
function(revision, callback) {
96+
var commits = [];
97+
98+
(function loadRev(rev) {
99+
repo.parseCommit(rev, function(err, commit) {
100+
if (err)
101+
callback(err);
102+
else {
103+
commits.push(commit);
104+
if (commit.parents.length == 0)
105+
callback(null, commits);
106+
else
107+
loadRev(commit.parents[0]);
108+
}
109+
});
110+
})(revision);
111+
}
112+
], callback);
113+
};
114+
85115

coder-apps/common/vcs/app/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
"use strict";
12
var pathutil = require('path');
23
var fs = require('fs');
34
var async = require('async');

0 commit comments

Comments
 (0)