本地协作

  1. 请确保您已获得我们云基础设施的访问权限。如果您没有访问权限,目前无法进行本地协作。

  2. 确保您已为您的平台安装了 Zed 的依赖项

请注意,collab 只能在 Windows 上使用 MSVC 工具链编译

  1. 克隆我们的云仓库并按照云 README 中的说明进行操作

  2. 为您的平台设置本地数据库

  1. 运行 collab

后端依赖项

如果您正在开发 Zed 的协作功能,您需要安装 zed 的 collab 服务器的依赖项

  • PostgreSQL
  • LiveKit
  • Foreman

您可以原生安装这些依赖项,也可以在 Docker 下运行它们。

macOS

  1. 安装 Postgres.app通过 homebrew 安装 postgresql

    brew install postgresql@15
    
  2. 安装 LivekitForeman

    brew install livekit foreman
    
  • 按照 collab README 中的步骤配置用于集成测试的 Postgres 数据库

或者,如果您已安装 Docker,您可以使用 Docker Compose 启动所有 collab 依赖项。

Linux

  1. 安装 Postgres

    sudo apt-get install postgresql                    # Ubuntu/Debian
    sudo pacman -S postgresql                          # Arch Linux
    sudo dnf install postgresql postgresql-server      # RHEL/Fedora
    sudo zypper install postgresql postgresql-server   # OpenSUSE
    
  2. 安装 Livekit

    curl -sSL https://get.livekit.io/cli | bash
    
  3. 安装 Foreman

Windows

此部分仍在开发中。说明尚未完成。

  • 安装 Postgres
  • 安装 Livekit,您可以选择将 livekit-server 二进制文件添加到您的 PATH 中。

或者,如果您已安装 Docker,您可以使用 Docker Compose 启动所有 collab 依赖项。

Docker

如果您有 docker 或 podman 可用,您可以使用 Docker Compose 在容器中运行后端依赖项

docker compose up -d

数据库设置

在本地运行 collab 服务器之前,您需要设置一个 zed Postgres 数据库。

在 macOS 和 Linux 上

script/bootstrap

此脚本将设置 zed Postgres 数据库,并用一些用户填充它。它需要互联网访问,因为它从 GitHub API 获取一些用户。

脚本将使用由以下内容定义的各种内容来初始化数据库

cat crates/collab/seed.default.json

要使用不同的管理员用户集,您可以创建该 json 文件的自定义版本并导出 SEED_PATH 环境变量。请注意,管理员列表中列出的用户名目前必须对应有效的 GitHub 用户。

{
  "admins": ["admin1", "admin2"],
  "channels": ["zed"]
}

在 Windows 上

.\script\bootstrap.ps1

本地测试协作功能

在 macOS 和 Linux 上

确保 Postgres 已配置并正在运行,然后运行 Zed 的协作服务器和 livekit 开发服务器

foreman start
# OR
docker compose up

或者,如果您不测试语音和屏幕共享,您可以只运行 collabcloud,而不运行 livekit 开发服务器

cargo run -p collab -- serve all
cd ../cloud; cargo make dev

在新终端中,运行两个或更多 Zed 实例。

script/zed-local -3

此脚本启动一到四个 Zed 实例,具体取决于 -2-3-4 标志。每个实例将连接到本地 collab 服务器,并以 .admins.json.admins.default.json 中的不同用户身份登录。

在 Windows 上

由于 Windows 上没有 foreman,您可以在单独的终端中运行以下命令

cargo run --package=collab -- serve all

如果您已将 livekit-server 二进制文件添加到您的 PATH 中,您可以运行

livekit-server --dev

否则,

.\path\to\livekit-serve.exe --dev

您还需要启动云服务器

cd ..\cloud; cargo make dev

在新终端中,运行两个或更多 Zed 实例。

node .\script\zed-local -2

请注意,这要求 node.exe 位于您的 PATH 中。

运行本地协作服务器

[!注意] 由于我们身份验证系统的近期更改,Zed 将无法使用本地协作服务器进行身份验证。

如果您想运行您自己的 zed 协作服务版本,您可以这样做,但请注意,这仍在开发中,并且不支持身份验证和扩展。

配置通过环境变量完成。默认情况下,它将从 .env.toml 读取配置,您应该将其作为设置指南。

默认情况下,Zed 假定 DATABASE_URL 是一个 Postgres 数据库,但您可以通过使用 --features sqlite 编译并使用带 ?mode=rwc 的 sqlite DATABASE_URL 来使其使用 Sqlite。

要进行身份验证,您必须首先通过创建一个至少包含您的 github 句柄的 seed.json 文件来配置服务器。这将用于按需创建用户。

{
  "admins": ["nathansobo"]
}

默认情况下,协作服务器将在首次创建数据库时初始化数据库,但如果您想添加更多用户,可以使用 SEED_PATH=./seed.json cargo run -p collab seed 显式重新初始化它们

然后,在运行 zed 客户端时,您必须指定两个环境变量:ZED_ADMIN_API_TOKEN(应与 .env.toml 中的 API_TOKEN 值匹配)和 ZED_IMPERSONATE(应与您的 seed.json 中的一个用户匹配)