be5cdbc013305f707702c7c4ed6.../fs2git.js

32 lines
982 B
JavaScript

var fs = require('fs');
var child_process = require("child_process");
var files = {};
(function recurse(path = '.'){
console.log("stat", path);
fs.readdirSync(path).forEach(filename => {
if (filename == ".git" || filename == ".DS_Store") return; // must ignore files that git ignores by default
var filepath = path + "/" + filename;
var stat = fs.statSync(filepath);
if (stat.isDirectory()) {
recurse(filepath);
} else {
if (!files[stat.mtimeMs]) files[stat.mtimeMs] = [];
files[stat.mtimeMs].push(filepath);
}
});
})();
console.log(files);
var times = Object.keys(files);
times.sort((a,b)=>a-b);
times.forEach(time => {
var dateString = new Date(Number(time)).toLocaleString();
var msg = `${dateString}\n\n${time}`;
var filearr = files[time].map(x => x.replace(/"/g, '\\"').replace(/\\/g, "\\\\"));
console.log(String(child_process.execSync(`git commit --date="${new Date(Number(time)).toISOString()}" -m "${msg}" "${filearr.join('" "')}"`)));
});