在Visual Studio中集中进行实时协作编辑

cae*_*say 14 c# version-control real-time visual-studio-2010 code-sharing

现在,在你向我提出关于SOF的重复问题之前,让我首先告诉你我正在寻找什么,我会解决其他问题和答案,以及为什么它不够.

问题#1:

我正在寻找一种方法来执行实时协作编辑,而源是在集中式源控制服务器上维护的.例如,如果Me和Joe Blow同时编辑文件X.cs,我们应该能够在输入时看到彼此的编辑.几乎就像我们坐在同一台电脑上一样.现在采取以下场景:我和Joe离线,Nimha Smith决定她想要更新一些代码.当我第二天回到网上时,我被推送了Nimha在我睡觉/离开服务器时更新的代码.

这是现场协作理念和SVN等源控制系统的结合.

解决可能的重复:

这里有一个类似的问题:.NET开发的协作编辑 - 有什么可能性,但它没有给我任何有用的东西,我将解释原因:

  • VsAnywhere:它通过一个中央公共服务器(正确的方向......?),除了所有相关方在加入会话之前需要在他们的机器上拥有完全相同的代码,并且一旦你离线,会话就会被破坏.
  • SourceMeet:使用P2P系统运行,因此没有服务器可以在离线时跟踪更改等等.没有尝试过,所以我无法证明它可以合并代码的程度(如果可以的话)
  • CollabEdit:不是VisualStudio
  • 云9:不是VisualStudio

显然这个问题这个问题直接关系到源控制软件,如SVN或GIT.现在,我试图让VSAnywhere和SVN一起玩得很好(SVN用于在离线时进行更改,而VSAnywhere用于在线开发人员)但它根本不起作用.

<edit>

我最近发现这个名为Collab的学士论文项目,这似乎是一个好主意,但我似乎无法让它尝试它.如果其他人有任何成功,请让我知道你做了什么.看起来如果我能让这个协作项目工作,似乎是一个很好的开始创建符合我需求的东西.

<edit2>

我也遇到了BeWeeVee,它的服务有一个Visual Studio扩展,但它的所有链接都已经死了.而CodeALike这可能是他们的替代VS实时协作有一个FAQ条目解释它的实时功能已被删除,并在"未来"将被重新执行.

问题2:

现在这将我带到问题的第二部分,因为我完全意识到可能没有适合我的高级订单的程序.我在哪里可以开始自己实现这样的软件?是否有一些现有的开源源代码控制/实时编辑代码,我可以开始构建它来创建它?或者如果我想实现这个,我几乎从头开始陷入困境.而且我确信你可以通过标签看到我想在C#中处理这样的任务,如果我必须解决的话.

2017年更新

由于在评论中表达了一些持续的兴趣,我已经创建了一个gitter,我们可以聚集所有感兴趣的人,并可能使这成为现实:https://gitter.im/sof-centrailized-collab-editing/Lobby .

Tim*_*mwi 3

如果您想自己解决这个问题,您可能希望将其作为 Visual Studio 扩展来完成。请注意,有两种不同类型的插件:\xe2\x80\x9cadd-ons\xe2\x80\x9d 和 \xe2\x80\x9cextensions\xe2\x80\x9d。我个人认为你应该编写一个扩展,但无论哪种方式,你都可以用 C# 编写它们。

\n\n

您需要连接到 Visual Studio\xe2\x80\x99s 文本编辑器。您可以通过谷歌搜索如何执行此操作,或者仅查看现有示例:用于弹性制表符的 Visual Studio 扩展。您的扩展程序必须在您进行更改时监视您的更改,然后通过您设计的某种协议将它们发送到服务器。您\xe2\x80\x99必须自己编写服务器,但在第一个版本中,它所需要做的就是将您的编辑发送给使用该扩展的其他人。然后,扩展将使每个人\xe2\x80\x99s 在每个人\xe2\x80\x99s 编辑器中进行编辑。

\n\n

如果有人使用旧版本的代码连接到服务器,则扩展程序可以从服务器下载最新版本。但是,如果用户在离线状态下(即未连接到服务器时)进行了编辑,那么您将需要进行一些巧妙的合并。这并不简单,但我知道如何做到这一点,因为我以前做过。如果你问得很好,我\xe2\x80\x99会为你写合并算法。然后,您\xe2\x80\x99只需要向其提供三个文本文件:基础版本(最后与服务器同步的版本)和两个编辑版本(离线编辑的版本和服务器中最新的版本)。

\n\n

如果你设法让它发挥作用,你将有可能创造出一些非常有用的东西。请务必宣传您的作品!:)

\n