{"record":{"id":"03885e5e39985a4c","repo":"nodejs/node","slug":"couldn-t-determine-commit-position-for-s","errorCode":null,"errorMessage":"Couldn't determine commit position for %s","messagePattern":"Couldn't determine commit position for (.+?)","errorType":"exception","errorClass":"GitFailedException","httpStatus":null,"severity":"error","filePath":"deps/v8/tools/release/git_recipes.py","lineNumber":291,"sourceCode":"    its SVN revision value is returned.\n    \"\"\"\n    git_log = self.GitLog(format='%B', n=1, git_hash=git_hash, **kwargs)\n    footer_map = GetCommitMessageFooterMap(git_log)\n\n    # Search for commit position metadata\n    value = footer_map.get(COMMIT_POSITION_FOOTER_KEY)\n    if value:\n      match = COMMIT_POSITION_RE.match(value)\n      if match:\n        return match.group(2)\n\n    # Extract the svn revision from 'git-svn' metadata\n    value = footer_map.get(GIT_SVN_ID_FOOTER_KEY)\n    if value:\n      match = GIT_SVN_ID_RE.match(value)\n      if match:\n        return match.group(1)\n    raise GitFailedException(\"Couldn't determine commit position for %s\" %\n                             git_hash)\n\n  def GitGetHashOfTag(self, tag_name, **kwargs):\n    return self.Git(\"rev-list -1 \" + tag_name).strip().encode(\"ascii\", \"ignore\")\n","sourceCodeStart":273,"sourceCodeEnd":296,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/v8/tools/release/git_recipes.py#L273-L296","documentation":"GitGetCommitPosition looks first for the Cr-Commit-Position footer and parses a branch/position out of it, then falls back to the git-svn-id footer. If neither footer is present on the commit, MB has no way to derive a position and raises GitFailedException.","triggerScenarios":"Asking for the commit position of a SHA whose commit message lacks both Cr-Commit-Position and git-svn-id trailers.","commonSituations":"Local/non-Google commits without injected footers; a commit made before footer injection was introduced; a rebased commit that stripped trailers; querying a tag object rather than a commit.","solutions":["Use a SHA that lives on the official V8/Chromium history where footers are present.","If working locally, ensure commits carry Cr-Commit-Position (e.g. via git-footers / cl footers).","For tags, dereference to the underlying commit first (`git rev-list -1 <tag>`)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Confirm footers are present before asking for the commit position.\nfooters = git_footers(git_hash)  # whatever helper you use\nassert (COMMIT_POSITION_FOOTER_KEY in footers\n        or GIT_SVN_ID_FOOTER_KEY in footers), (\n    f'{git_hash} has no Cr-Commit-Position or git-svn-id footer')","typeGuard":null,"tryCatchPattern":"try:\n    pos = repo.GitGetCommitPosition(git_hash)\nexcept GitFailedException as e:\n    log.warning('no commit position for %s; not on official history?', git_hash)\n    raise","preventionTips":["Only query commit positions for SHAs on official V8/Chromium history.","Dereference tags to commits before querying.","Detect missing footers upstream and abort the release flow early."],"tags":["git","release-tools","v8","commit-position","footers"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}