主要观点:尝试构建最简单的 git 协作工具,目标是使自我托管像运行 SSH 服务器一样简单,同时不牺牲外部协作者的时间和精力,将邮件列表和拉取请求工作流相结合。
关键信息:
- 目标:创建简单的自我托管 git 解决方案,能与外部贡献者协作,代码所有者只需设置一个 golang 二进制文件,外部贡献者只需 SSH 密钥对和 SSH 客户端,通过订阅 RSS 接收补丁请求更新。
- 问题:电子邮件作为发送和接收 git 仓库更改的去中心化系统虽好,但新用户加入邮件列表、设置邮件客户端及提交代码贡献的过程繁琐,且受电子邮件协议功能集限制;Github 拉取请求易用但需在网站内进行审查,在本地开发环境中审查有缺点,自我托管的模仿拉取请求解决方案需要大量基础设施,外部用户提交代码前需创建账户登录,增加摩擦。
- 引入补丁请求(PR):创建无需设置电子邮件繁琐过程和电子邮件协议限制的自我托管 git“服务器”,主要工作流围绕本地开发环境,利用 SSH 应用处理大部分交互,通知通过 RSS ,所有状态变更生成静态 Web 资产,可使用
format-patch
工作流,所有协作在代码中进行,无需网页查看器,解决同一代码更改发送多个补丁集的问题,可利用git notes
进行审查/评论但感觉较粗暴。
重要细节: - 无需创建另一个代码托管平台,通过简单的方式实现协作。
- 外部贡献者通过 SSH 进行操作,代码所有者设置 golang 二进制文件。
- 补丁请求更新通过 RSS 接收。
format-patch
工作流中,贡献者和所有者在代码中创建新提交和生成补丁。- 可利用
git notes
进行评论但较粗暴,建议以代码形式发送评论。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。