From a5f46d68f02764ed5dc2b5a4946e2dd5d03c8bb5 Mon Sep 17 00:00:00 2001 From: NotII <46204250+NotII@users.noreply.github.com> Date: Sun, 6 Apr 2025 16:08:19 +0100 Subject: [PATCH] Update git-utils.ts --- lib/git-utils.ts | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/git-utils.ts b/lib/git-utils.ts index ea1f0fc..71de643 100644 --- a/lib/git-utils.ts +++ b/lib/git-utils.ts @@ -11,7 +11,8 @@ let cachedGitInfo: GitInfo | null = null; /** * Gets the current git commit hash from various sources - * - First tries environment variable (from Docker) + * - First tries to read directly from the Git hash file in Docker + * - Then tries environment variable (from Docker) * - Then tries the JSON file created by our build script * - Returns "dev" if nothing is available */ @@ -21,26 +22,16 @@ export async function getGitCommitInfo(): Promise { return cachedGitInfo; } - // First, check if we have the env variable (from Docker) - if (process.env.GIT_COMMIT_SHA) { - const gitInfo: GitInfo = { - commitHash: process.env.GIT_COMMIT_SHA, - buildTime: new Date().toISOString(), - }; - cachedGitInfo = gitInfo; - return gitInfo; - } - - // In Docker, the hash might be stored in a file at /app/git_commit_sha + // In Docker or server, try to read the hash file directly first (most reliable method) if (typeof window === 'undefined') { try { const fs = require('fs'); - const path = require('path'); // Check for Docker-specific git hash file const dockerGitHashPath = '/app/git_commit_sha'; if (fs.existsSync(dockerGitHashPath)) { const hash = fs.readFileSync(dockerGitHashPath, 'utf8').trim(); + console.log(`Read git hash from file: ${hash}`); const gitInfo: GitInfo = { commitHash: hash, buildTime: new Date().toISOString(), @@ -53,6 +44,21 @@ export async function getGitCommitInfo(): Promise { } } + // Then, check if we have the env variable + if (process.env.GIT_COMMIT_SHA) { + // Check if it's the literal string, which is an error case + if (process.env.GIT_COMMIT_SHA.includes('$(cat')) { + console.warn('GIT_COMMIT_SHA contains a shell command instead of the actual hash'); + } else { + const gitInfo: GitInfo = { + commitHash: process.env.GIT_COMMIT_SHA, + buildTime: new Date().toISOString(), + }; + cachedGitInfo = gitInfo; + return gitInfo; + } + } + // In the browser, fetch from the public directory if (typeof window !== 'undefined') { try {