好的,所以此时没有协议或服务具有符合上述描述所需的功能(我打算只是编辑我的问题,但只有在像我这样的人实际实现原型之前,这作为解决方案答案是有效的.)
在这个阶段,一个好的解决方案是在 Node.js 等异步服务器系统上运行基于云的编辑器(cloud9 以与所需类似的方法运行),其中可以独立于每个人在编辑器级别保持同步更改他们的文件副本。该系统将是一个痛苦的调试,但一旦运行
每个新用户都可以: 1. 使用 GIT/CVS/Mercurial 帐户登录 2. 环境将克隆最新代码的副本。3. 然后他们可以实时编辑并查看其他人的更改。4. 然后仅根据文件副本中包含的代码进行提交和拉取,同时仍然能够看到其他未提交的更改(此类更改需要标记为此类,锁定以防止并行编辑,除非受到邀请原作者 [有限协作编程] 并标有原作者 userId。
提议的系统组件:
- Node.js 服务器(简单)
- 基于 HTML 的实时同步编辑器(简单)
- 每个用户的 GIT 集成与同步文件副本的关联分离,同时保持实时更改。(没那么容易)
- 将 2 和 3 合并到一个系统中(我进行了更改:我的文件副本已更新,并且通用编辑环境显示锁定的代码部分,其中各个用户的原始代码与我所做的更改并行(GIT 差异分辨率 GUI 样式);其他人进行更改:我的代码不受影响,但我可以看到他们所做的更改,但是我无法更改该代码块的副本)
在将来
- 允许对同一代码块进行并行更改,并允许所有用户查看尚未提交到中央存储库的每个代码部分的所有不同更改。所有用户都可以访问几乎无限的主代码库分支,但这些分支只包含文档特定部分的代码,而不是整个项目。
如果您仍然没有得到它,我可以实现的最简单的分解。(我正在重读这篇文章,我头晕目眩)我们使用 2 个并行版本控制系统。
- 顶层(编辑器)在进行更改时进行更改,并使其可供所有用户使用,同时显示谁进行了相关更改。
- 第二级(传统方法)维护每个用户代码的分离,并且只有在用户请求将更改合并到中央存储库时才提交更改。
从理论上讲,这就是现有系统的工作方式,但是……没有简单的方法可以在其他人仍在编辑时查看代码库的分支。除非您使用的是基于 Web 的系统,例如 Github 或 Stash。即便如此,在他们提交到他们的分叉之前你也看不到代码,而且我一次又一次地看到中央存储库过时的文件,以至于 GIT 无法解决在分叉上所做的更改由于行号和代码发生了如此巨大的变化,因此已经合并了其他更改。
无论如何,这是我对解决问题的看法。我知道很多人对当前已经在使用的非同步系统感到满意,但是......根据我迄今为止在 UNI 的团队合作经验,非常需要某种形式的同步编辑环境,同时仍然提供问责制由现有的 GIT/CVS/Mercurial 系统提供。