const { exec } = require('child_process'); const fs = require('fs'); const gitPath = 'D:\\Git\\bin\\git.exe'; const cwd = __dirname; function runGit(cmd, env) { return new Promise((resolve, reject) => { console.log(`Running: ${cmd}`); const child = exec(cmd, { cwd, env, timeout: 120000 }, (error, stdout, stderr) => { if (error) { console.error(`Error: ${error.message}`); console.error(`stderr: ${stderr}`); reject(error); } else { console.log(`stdout: ${stdout.slice(0, 2000)}`); resolve({ stdout, stderr }); } }); }); } async function main() { try { // Remove index.lock if exists console.log('\n=== Step 1: Remove index.lock ==='); const lockFile = `${cwd}\\.git\\index.lock`; if (fs.existsSync(lockFile)) { fs.unlinkSync(lockFile); console.log('Removed index.lock'); } // Set git config console.log('\n=== Step 2: Set git config ==='); await runGit(`${gitPath} config user.email "jiapengyu@example.com"`); await runGit(`${gitPath} config user.name "jiapengyu"`); // Add all files console.log('\n=== Step 3: Add all files ==='); await runGit(`${gitPath} add --all`); // Check status console.log('\n=== Step 4: Check git status ==='); const status = await runGit(`${gitPath} status --short`); console.log('Status:', status.stdout); // Commit console.log('\n=== Step 5: Commit ==='); await runGit(`${gitPath} commit -m "Initial commit - full huishou project"`); // Set remote console.log('\n=== Step 6: Set remote ==='); try { await runGit(`${gitPath} remote add origin git@git.torchcloud.cn:jiapengyu/huishou.git`); } catch (e) { console.log('Remote already exists, updating...'); await runGit(`${gitPath} remote set-url origin git@git.torchcloud.cn:jiapengyu/huishou.git`); } // Push console.log('\n=== Step 7: Push ==='); const env = { ...process.env }; env.GIT_SSH_COMMAND = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'; await runGit(`${gitPath} push -f origin master`, env); console.log('\n=== Success! ==='); } catch (error) { console.error('\n=== Failed ==='); console.error(error.message); process.exit(1); } } main();