diff --git a/packages/backend/src/gitea.ts b/packages/backend/src/gitea.ts index 831d38a6..2d58003c 100644 --- a/packages/backend/src/gitea.ts +++ b/packages/backend/src/gitea.ts @@ -52,6 +52,7 @@ export const getGiteaReposFromConfig = async (config: GiteaConfig, ctx: AppConte id: repoId, cloneUrl: cloneUrl.toString(), path: repoPath, + defaultBranch: repo.default_branch, isStale: false, isFork: repo.fork!, isArchived: !!repo.archived, diff --git a/packages/backend/src/github.ts b/packages/backend/src/github.ts index 15f4b05a..3373d967 100644 --- a/packages/backend/src/github.ts +++ b/packages/backend/src/github.ts @@ -21,8 +21,9 @@ type OctokitRepository = { subscribers_count?: number, forks_count?: number, archived?: boolean, + default_branch?: string, topics?: string[], - size?: number, + size?: number } export const getGitHubReposFromConfig = async (config: GitHubConfig, signal: AbortSignal, ctx: AppContext) => { @@ -79,6 +80,7 @@ export const getGitHubReposFromConfig = async (config: GitHubConfig, signal: Abo id: repoId, cloneUrl: cloneUrl.toString(), path: repoPath, + defaultBranch: repo.default_branch, isStale: false, isFork: repo.fork, isArchived: !!repo.archived, diff --git a/packages/backend/src/gitlab.ts b/packages/backend/src/gitlab.ts index b586f023..bfec6c81 100644 --- a/packages/backend/src/gitlab.ts +++ b/packages/backend/src/gitlab.ts @@ -114,6 +114,7 @@ export const getGitLabReposFromConfig = async (config: GitLabConfig, ctx: AppCon cloneUrl: cloneUrl.toString(), path: repoPath, isStale: false, + defaultBranch: project.default_branch, isFork, isArchived: project.archived, topics: project.topics ?? [], diff --git a/packages/backend/src/main.ts b/packages/backend/src/main.ts index 21076965..a09081ee 100644 --- a/packages/backend/src/main.ts +++ b/packages/backend/src/main.ts @@ -9,7 +9,7 @@ import { AppContext, LocalRepository, GitRepository, Repository, Settings } from import { cloneRepository, fetchRepository, getGitRepoFromConfig } from "./git.js"; import { createLogger } from "./logger.js"; import { createRepository, Database, loadDB, updateRepository, updateSettings } from './db.js'; -import { arraysEqualShallow, isRemotePath, measure } from "./utils.js"; +import { arraysEqualShallow, stringsEqualFalseySafe, isRemotePath, measure } from "./utils.js"; import { DEFAULT_SETTINGS } from "./constants.js"; import stripJsonComments from 'strip-json-comments'; import { indexGitRepository, indexLocalRepository } from "./zoekt.js"; @@ -154,7 +154,8 @@ export const isRepoReindexingRequired = (previous: Repository, current: Reposito return ( !arraysEqualShallow(previous.branches, current.branches) || - !arraysEqualShallow(previous.tags, current.tags) + !arraysEqualShallow(previous.tags, current.tags) || + !stringsEqualFalseySafe(previous.defaultBranch, current.defaultBranch) ); } diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index 2888fc2a..ecfa2289 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -17,6 +17,7 @@ export interface GitRepository extends BaseRepository { cloneUrl: string; branches: string[]; tags: string[]; + defaultBranch?: string; gitConfigMetadata?: Record; } diff --git a/packages/backend/src/utils.ts b/packages/backend/src/utils.ts index 7e94905a..677bb2e0 100644 --- a/packages/backend/src/utils.ts +++ b/packages/backend/src/utils.ts @@ -129,3 +129,9 @@ export const arraysEqualShallow = (a?: readonly T[], b?: readonly T[]) => { return true; } + +export const stringsEqualFalseySafe = (a?: string, b?: string): boolean => { + if (a === b) return true; + else if (!a && !b) return true; + else return false; +} diff --git a/packages/backend/src/zoekt.ts b/packages/backend/src/zoekt.ts index eab5fea6..445eaccd 100644 --- a/packages/backend/src/zoekt.ts +++ b/packages/backend/src/zoekt.ts @@ -9,6 +9,7 @@ export const indexGitRepository = async (repo: GitRepository, settings: Settings ...repo.branches ?? [], ...repo.tags ?? [], ]; + if (repo.defaultBranch) revisions.push(repo.defaultBranch); const command = `zoekt-git-index -allow_missing_branches -index ${ctx.indexPath} -max_trigram_count ${settings.maxTrigramCount} -file_limit ${settings.maxFileSize} -branches ${revisions.join(',')} ${repo.path}`;