fix(diagnostics): 處理 ai review findings #32

Open
jiantw83 wants to merge 85 commits from develop into master
Showing only changes of commit c63b1a6da2 - Show all commits
+7 -8
View File
@@ -130,17 +130,16 @@ function resolveMergeBase(cwd, baseRef) {
diagnostics.push('merge-base(首次):失敗');
}
// 資料驅動的補抓策略:淺層才 unshallow;其後依序 deepen base 與 HEAD。
// 每個策略成功後立即重試 merge-base,成功即回傳,避免多餘往返。
const strategies = [];
// 資料驅動的補抓策略:先以固定深度分批加深 base 與 HEAD(每步後重試 merge-base,成功即回傳);
// 只有仍失敗且為淺層 repo 時,才把成本最高的 --unshallow(下載完整歷史)當最後手段,
// 避免大型/長壽 repo 只為找共同祖先就無謂拉全史。
const strategies = [
['deepen base', 'fetch', '--no-tags', '--deepen=1000', 'origin', `+refs/heads/${baseRef}:refs/remotes/${remoteBase}`],
['deepen HEAD', 'fetch', '--no-tags', '--deepen=1000', 'origin', 'HEAD'],
];
if (gitTrim(cwd, 'rev-parse', '--is-shallow-repository') === 'true') {
strategies.push(['unshallow', 'fetch', '--no-tags', '--unshallow', 'origin']);
}
strategies.push([
'deepen base',
'fetch', '--no-tags', '--deepen=1000', 'origin', `+refs/heads/${baseRef}:refs/remotes/${remoteBase}`,
]);
strategies.push(['deepen HEAD', 'fetch', '--no-tags', '--deepen=1000', 'origin', 'HEAD']);
for (const [label, ...args] of strategies) {
if (!runFetch(label, ...args)) continue; // fetch 失敗就換下一個策略。