
This PR updates our DB schemas and wire protocol to separate the synchronization of git statuses and other repository state from the synchronization of worktrees. This paves the way for moving the code that executes git status updates out of the `worktree` crate and onto the new `GitStore`. That end goal is motivated by two (related) points: - Disentangling git status updates from the worktree's `BackgroundScanner` will allow us to implement a simpler concurrency story for those updates, hopefully fixing some known but elusive bugs (upstream state not updating after push; statuses getting out of sync in remote projects). - By moving git repository state to the project-scoped `GitStore`, we can get rid of the duplication that currently happens when two worktrees are associated with the same git repository. Co-authored-by: Max <max@zed.dev> Release Notes: - N/A --------- Co-authored-by: Max <max@zed.dev> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
32 lines
1.1 KiB
SQL
32 lines
1.1 KiB
SQL
CREATE TABLE "project_repositories" (
|
|
"project_id" INTEGER NOT NULL,
|
|
"abs_path" VARCHAR,
|
|
"id" INT8 NOT NULL,
|
|
"legacy_worktree_id" INT8,
|
|
"entry_ids" VARCHAR,
|
|
"branch" VARCHAR,
|
|
"scan_id" INT8 NOT NULL,
|
|
"is_deleted" BOOL NOT NULL,
|
|
"current_merge_conflicts" VARCHAR,
|
|
"branch_summary" VARCHAR,
|
|
PRIMARY KEY (project_id, id)
|
|
);
|
|
|
|
CREATE INDEX "index_project_repositories_on_project_id" ON "project_repositories" ("project_id");
|
|
|
|
CREATE TABLE "project_repository_statuses" (
|
|
"project_id" INTEGER NOT NULL,
|
|
"repository_id" INT8 NOT NULL,
|
|
"repo_path" VARCHAR NOT NULL,
|
|
"status" INT8 NOT NULL,
|
|
"status_kind" INT4 NOT NULL,
|
|
"first_status" INT4 NULL,
|
|
"second_status" INT4 NULL,
|
|
"scan_id" INT8 NOT NULL,
|
|
"is_deleted" BOOL NOT NULL,
|
|
PRIMARY KEY (project_id, repository_id, repo_path)
|
|
);
|
|
|
|
CREATE INDEX "index_project_repos_statuses_on_project_id" ON "project_repository_statuses" ("project_id");
|
|
|
|
CREATE INDEX "index_project_repos_statuses_on_project_id_and_repo_id" ON "project_repository_statuses" ("project_id", "repository_id");
|