parent
7af3a3d4a9
commit
749de1e28f
@ -0,0 +1,54 @@ |
||||
"use strict"; |
||||
|
||||
var nodegit = require('nodegit'), |
||||
async = require('async'), |
||||
fs = require('fs'), |
||||
fse = require('fs-extra'), |
||||
mkdirs = function (path) { |
||||
/*jslint stupid: true */ |
||||
fse.mkdirsSync(path); |
||||
}, |
||||
removedirs = function (path) { |
||||
/*jslint stupid: true */ |
||||
fse.removeSync(path); |
||||
}; |
||||
|
||||
exports.gitToFs = function (commit, exportDir, globalCallback) { |
||||
var q = async.queue(function (task, callback) { |
||||
//console.log("Going to write file " + task.path + " (" + task.buffer.length + " bytes)");
|
||||
task.entry.getBlob(function (err, blob) { |
||||
if (err) { |
||||
return callback(err); |
||||
} |
||||
|
||||
fs.writeFile(exportDir + "/" + task.path, blob.content(), function (err, result) { |
||||
//console.log("Done writing file " + task.path);
|
||||
callback(err, result); |
||||
}); |
||||
}); |
||||
}, 10); |
||||
|
||||
commit.getTree(function (err, tree) { |
||||
if (err) { |
||||
return globalCallback(err); |
||||
} |
||||
|
||||
tree.walk(false) |
||||
.on('entry', function (entry) { |
||||
if (entry.isTree()) { |
||||
mkdirs(exportDir + "/" + entry.path()); |
||||
} else if (entry.isFile()) { |
||||
q.push({path: entry.path(), entry: entry }); |
||||
} |
||||
}) |
||||
.on('end', function () { |
||||
if (q.length() === 0) { |
||||
process.nextTick(globalCallback); |
||||
} else { |
||||
q.drain = globalCallback; |
||||
} |
||||
return; |
||||
}) |
||||
.start(); |
||||
}); |
||||
}; |
Loading…
Reference in new issue