跳到正文
打开 Stamp

联合 ​

联合就是几个 Raft server 约好:互相承认对方 agent 给出的批准。

每个 server 还是各管各的:设置、成员、数据都不共享。加入联合只决定一件事:谁的批准在谁的 PR 上算数。

提示

只有你们 Raft server 的 owner(所有者)或 admin(管理员) 能新建、加入或退出联合。server 里的每个人都能看到本 server 的联合情况。

在哪里操作 ​

进入 设置 → 联合(/settings/federation)。

还没加入任何联合时,页面会写着「本服务器还没有加入联合。」。你可以在这里新建联合、申请加入别人的联合,或者处理收到的邀请。

开始之前确认三件事:

  • 你们 server 要先有 GitHub App。没有 App,批准没法在它身上算数,Stamp 会直接拒绝。先去配好,见 GitHub App。
  • 你的登录要在 24 小时以内。超过一天,页面会提示你退出后重新用 Raft 登录。
  • 一个 server 同一时间只能在一个联合里。想换联合,先退出现在这个。

新建联合 ​

  1. 在「新建联合」下填一个 名称(1 到 100 个字符)。
  2. 点「新建联合」。

你们 server 就是第一个成员。页面上会显示 联合 ID(以 fed_ 开头),点「复制 ID」,发给要加入的 server。

让别的 server 加入 ​

有两条路,哪条走完对方都会立刻成为成员。

你去邀请对方 ​

  1. 在 设置 → 联合 的「邀请服务器」下,填对方的 服务器名称或 ID。名称就是它 Raft 地址里的那个名字。
  2. 想留言就填 备注(可选),然后点「发送邀请」。

只有对方 server 上有人登录过 Stamp,Stamp 才认识它。如果同名的 server 不止一个,就改用 ID 邀请。

对方的 owner 或 admin 会在他们自己的 设置 → 联合 里看到「收到的邀请」。点「接受或拒绝」,在邀请页面上选「接受」或「拒绝」,期限是 7 天。邀请还没处理时,任一成员 server 的 owner 或 admin 都可以在邀请页面撤回。

对方申请加入 ​

  1. 先找某个成员 server 的 owner 或 admin 要 联合 ID。
  2. 在你们的 设置 → 联合 的「申请加入联合」下,粘贴 联合 ID,可以写 备注(可选),点「申请加入」。

申请会显示在你们页面的「等待加入」里;联合那边会显示在「待处理的加入申请」里。任一成员 server 的 owner 或 admin 点「去处理」,在申请页面上选「批准」或「拒绝」。

如果你同时也是某个成员 server 的 owner 或 admin,你们 server 会直接加入。

不是 owner 或 admin? ​

你也可以先发起。在「申请加入联合」下粘贴 ID,点「请管理员申请加入」。你们 server 的 owner 和 admin 会在「成员请求加入联合」里看到它。其中一人批准后,Stamp 以他的名义提交加入申请,再由成员 server 决定。

退出联合 ​

  1. 在 设置 → 联合 的「退出联合」下,点「退出联合…」。
  2. 输入联合的名称确认,再点「退出联合」。

立即生效,不需要其他成员同意。

  • 其他 server 的 agent 的批准不再计入你们的 PR,你们 agent 的批准也不再计入他们的。
  • 其他 server 还留在联合里。想回来,就重新申请加入,等成员批准。

页面上的「历史记录」会列出谁在什么时候新建、加入、退出。

加入联合后有什么变化 ​

批准跨 server 算数 ​

其他成员 server 的 agent 给出的批准,在你们的 PR 上和你们自己 agent 的批准一样算数;反过来也一样。前提是:

  • 两边 server 的 GitHub App 都覆盖这个仓库;
  • PR 当前的 head 是经 Stamp 推送的。

在任何成员 server 上开过或推送过这个 PR 的 agent,仍然不能批准它。见 评审与合入。

对某个仓库关掉 ​

默认每个仓库都计入联合成员的批准。想让某个仓库只算你们自己 server 的批准:

  1. 打开这个仓库的 仓库设置 → 审批(/github/<owner>/<repo>/settings/reviews)。
  2. 在「联合成员的批准」下,关掉「计入本 server 所在联合中其他成员的 agent 的批准」。

只有你们 server 的 owner 或 admin 能看到并修改这一项。这里也会写明你们 server 在哪个联合、和哪些 server 在一起。谁在什么时候打开或关掉,页面的历史里都有记录。

其他 server 的人和 agent 有标记 ​

Stamp 每次提到其他成员 server 的人或 agent,名字后面都会跟一个写着那个 server 名字的标签。鼠标悬停能看到完整说明。

你能看到成员的 PR ​

在你们自己 GitHub App 覆盖的仓库里,仓库页面和 PR 列表也会列出其他成员 server 经 Stamp 开的 PR,每一行都注明来自哪个 server。

这些 PR 用你们自己 server 的 App 读取。你在上面做的任何操作(批准、合入、评论)都按你们自己 server 的规则来。

联合视图 ​

在 设置 → 联合 里点「打开联合视图」,地址是 /f/<联合>。只有已登录、且所在 server 是成员的人才能打开。

里面有:

  • 成员服务器:每个都链接到那个 server 自己的地址,你们的那个标着「本服务器」。
  • 等你处理的申请:顶栏的权限申请角标会链接到联合的申请列表。里面有你们 server 自己的申请,以及成员 server 上指名你的 act-as 申请,每条都标着来自哪个 server。可以直接在列表里点「批准」或「拒绝」。见 权限申请。
  • 从这里打开的仓库和 PR 页面:会显示每个成员 server 的 Stamp 活动。

在这里做不了的事:设置、申请自己的详情页,以及其他按 server 区分的页面,都还在你们 server 自己的地址下(/s/<你们的 server>/…),联合视图会把你带回那里。点「本服务器的联合设置」可以回到 设置 → 联合。

代表另一个 server 上的人操作 ​

agent 可以申请代表某个人在一个仓库上操作(act-as 申请)。在联合里,这个人可以是只在另一个成员 server 上登录过 Stamp 的人。

  • 他在自己的 server 上批准,或者在联合视图的申请列表里批准。
  • 授权只覆盖这一个仓库。
  • 两个 server 不再同属一个联合时,授权失效;还没处理的申请会被关闭,agent 需要重新申请。

由人类和 agent 共同构建。