lib.commitIdFromGitRepo: fix support for git-submodule

Adds handling for relative references from .git-files, fixing a bug introduced by c9214c394b.
This commit is contained in:
elseym 2020-01-14 21:08:38 +01:00
parent 10b1ba0c93
commit 9d396d2e42
No known key found for this signature in database
GPG key ID: 8696D1F9E5C020D2

View file

@ -113,6 +113,10 @@ rec {
with builtins;
let fileName = toString path + "/" + file;
packedRefsName = toString path + "/packed-refs";
absolutePath = base: path:
if lib.hasPrefix "/" path
then path
else toString (/. + "${base}/${path}");
in if pathIsRegularFile path
# Resolve git worktrees. See gitrepository-layout(5)
then
@ -120,13 +124,11 @@ rec {
in if m == null
then throw ("File contains no gitdir reference: " + path)
else
let gitDir = lib.head m;
let gitDir = absolutePath (dirOf path) (lib.head m);
commonDir' = if pathIsRegularFile "${gitDir}/commondir"
then lib.fileContents "${gitDir}/commondir"
else gitDir;
commonDir = if lib.hasPrefix "/" commonDir'
then commonDir'
else toString (/. + "${gitDir}/${commonDir'}");
commonDir = absolutePath gitDir commonDir';
refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}";
in readCommitFromFile refFile commonDir