diff --git a/lib/config/utils.js b/lib/config/utils.js index 9646f8c0e..39be6c2ae 100644 --- a/lib/config/utils.js +++ b/lib/config/utils.js @@ -25,16 +25,29 @@ exports.toIntegerConfig = function toIntegerConfig (configValue) { } exports.getGitCommit = function getGitCommit (repodir) { - if (!fs.existsSync(repodir + '/.git/HEAD')) { - return undefined + try { + // prefer using git to get the current ref, as poking in .git is very fragile + return require('child_process').execSync('git rev-parse HEAD') + } catch (e) { + // there was an error running git, try to parse refs ourselves + if (!fs.existsSync(repodir + '/.git/HEAD')) { + // there is no HEAD information + return undefined + } + let reference = fs.readFileSync(repodir + '/.git/HEAD', 'utf8') + if (reference.startsWith('ref: ')) { + // HEAD references another ref, try to get the commit SHA from .git/ref/heads + reference = reference.substr(5).replace('\n', '') + const refPath = path.resolve(repodir + '/.git', reference) + if (!fs.existsSync(refPath)) { + // ref does not exist in .git/ref/heads + return undefined + } + reference = fs.readFileSync(refPath, 'utf8') + } + reference = reference.replace('\n', '') + return reference } - let reference = fs.readFileSync(repodir + '/.git/HEAD', 'utf8') - if (reference.startsWith('ref: ')) { - reference = reference.substr(5).replace('\n', '') - reference = fs.readFileSync(path.resolve(repodir + '/.git', reference), 'utf8') - } - reference = reference.replace('\n', '') - return reference } exports.getGitHubURL = function getGitHubURL (repo, reference) { diff --git a/public/docs/release-notes.md b/public/docs/release-notes.md index b942aa83d..6490601c1 100644 --- a/public/docs/release-notes.md +++ b/public/docs/release-notes.md @@ -6,6 +6,8 @@ If you want to continue using Google Analytics or Disqus, you can re-enable them in the config. See [the docs](https://docs.hedgedoc.org/configuration/#web-security-aspects) for details. +### Bugfixes +- Fix crash when trying to read the current Git commit on startup ## 1.8.2 2021-05-11