fix: resolve default branch explicitly when updating shallow-cloned custom modules
With shallow clones (--depth 1), `origin/HEAD` becomes stale after the initial clone. The update path used `git reset --hard origin/HEAD` which never picked up new commits pushed to the default branch. Resolve the default branch name via `git symbolic-ref refs/remotes/origin/HEAD`, then fetch and reset against `origin/<branch>` explicitly. Falls back to `main` if origin/HEAD is not set.
This commit is contained in:
parent
e36f219c81
commit
31d6c8357f
|
|
@ -424,7 +424,27 @@ class CustomModuleManager {
|
||||||
stdio: ['ignore', 'pipe', 'pipe'],
|
stdio: ['ignore', 'pipe', 'pipe'],
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
execSync('git reset --hard origin/HEAD', {
|
// Resolve the default branch (origin/HEAD) and fetch it explicitly.
|
||||||
|
// With shallow clones, `origin/HEAD` is stale and `git reset --hard
|
||||||
|
// origin/HEAD` never picks up new commits on the default branch.
|
||||||
|
let defaultBranch = 'main';
|
||||||
|
try {
|
||||||
|
defaultBranch = execSync('git symbolic-ref refs/remotes/origin/HEAD --short', {
|
||||||
|
cwd: repoCacheDir,
|
||||||
|
stdio: 'pipe',
|
||||||
|
})
|
||||||
|
.toString()
|
||||||
|
.trim()
|
||||||
|
.replace('origin/', '');
|
||||||
|
} catch {
|
||||||
|
// Fallback if origin/HEAD is not set
|
||||||
|
}
|
||||||
|
execSync(`git fetch --depth 1 origin ${quoteCustomRef(defaultBranch)}`, {
|
||||||
|
cwd: repoCacheDir,
|
||||||
|
stdio: ['ignore', 'pipe', 'pipe'],
|
||||||
|
env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
|
||||||
|
});
|
||||||
|
execSync(`git reset --hard origin/${quoteCustomRef(defaultBranch)}`, {
|
||||||
cwd: repoCacheDir,
|
cwd: repoCacheDir,
|
||||||
stdio: ['ignore', 'pipe', 'pipe'],
|
stdio: ['ignore', 'pipe', 'pipe'],
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue