Restart repository history from target event

This commit is contained in:
2026-07-18 16:54:26 +01:00
commit e08aa0a667
71 changed files with 15963 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
import fs from 'fs-extra';
import path from 'path';
/**
* Recursively copies a directory or file using streams to avoid 'copyfile' syscall issues (EINVAL)
* on some cross-volume operations.
*/
export async function copyDirRecursive(src: string, dest: string) {
const stats = await fs.stat(src);
if (stats.isDirectory()) {
await fs.ensureDir(dest);
const files = await fs.readdir(src);
await Promise.all(files.map(async (file) => {
const srcPath = path.join(src, file);
const destPath = path.join(dest, file);
await copyDirRecursive(srcPath, destPath);
}));
} else {
await copyFileStream(src, dest);
}
}
async function copyFileStream(src: string, dest: string) {
return new Promise<void>((resolve, reject) => {
const readStream = fs.createReadStream(src);
const writeStream = fs.createWriteStream(dest);
readStream.on('error', reject);
writeStream.on('error', reject);
writeStream.on('finish', resolve);
readStream.pipe(writeStream);
});
}