diff --git a/main.js b/main.js index c00c5a6..f38e5b5 100644 --- a/main.js +++ b/main.js @@ -479,36 +479,42 @@ app.whenReady().then(() => { currentBranch = (await git.revparse(['--abbrev-ref', 'HEAD'])).trim(); } catch { currentBranch = null; - } //mach kein fass auf - - if (!currentBranch || currentBranch === 'HEAD') { - // HEAD ist detached - const headCommit = (await git.revparse(['HEAD'])).trim(); - let masterCommit = null; - try { - masterCommit = (await git.revparse(['refs/heads/master'])).trim(); - } catch (e) { - masterCommit = null; // master existiert nicht - } - - if (masterCommit && headCommit === masterCommit) { - // HEAD ist detached, zeigt aber auf den Master-Tip! - await git.checkout('master'); - debug('[autoCommit] HEAD war detached, aber auf master-Tip – zurück zu master.'); - } else { - // Dein altes Branching, nur wenn wirklich nötig: - const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); - const backupBranch = `backup-master-${timestamp}`; - const branches = await git.branchLocal(); - if (branches.all.includes('master')) { - await git.branch(['-m', 'master', backupBranch]); - debug(`[autoCommit] Alter master in ${backupBranch} umbenannt.`); - } - await git.checkout(['-b', 'master']); - debug('[autoCommit] Neuer master-Branch erstellt und ausgecheckt.'); - } } + if (!currentBranch || currentBranch === 'HEAD') { + // HEAD ist detached + const headCommit = (await git.revparse(['HEAD'])).trim(); + let masterCommit = null; + let hasMaster = false; + try { + masterCommit = (await git.revparse(['refs/heads/master'])).trim(); + hasMaster = true; + } catch (e) { + masterCommit = null; // master existiert nicht + hasMaster = false; + } + + if (hasMaster && headCommit === masterCommit) { + // HEAD ist detached, zeigt aber auf den master-Tip! + // -> einfach zurück zu master (kein Umbenennen, kein Neuanlegen!) + await git.checkout('master'); + debug('[autoCommit] HEAD war detached, aber auf master-Tip – zurück zu master.'); + } else if (hasMaster && headCommit !== masterCommit) { + // HEAD ist detached, aber zeigt NICHT auf master-Tip: + // -> master-Branch wird zu backup gemacht und ein neuer master-Branch auf HEAD erstellt + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + const backupBranch = `backup-master-${timestamp}`; + await git.branch(['-m', 'master', backupBranch]); + debug(`[autoCommit] Alter master in ${backupBranch} umbenannt.`); + await git.checkout(['-b', 'master']); + debug('[autoCommit] Neuer master-Branch erstellt und ausgecheckt.'); + } else if (!hasMaster) { + // Es gibt keinen master-Branch (z.B. initiales Repo) + await git.checkout(['-b', 'master']); + debug('[autoCommit] Kein master-Branch vorhanden, neuer master erstellt.'); + } + } + await git.add(['-A']); debug('Alle Änderungen gestaged.'); await git.commit(message || 'test');