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

时间:2012-05-22 00:32:55

标签: c# visual-studio-2010 version-control real-time code-sharing

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

问题#1

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

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

解决可能的重复项:

有一个类似的问题,在这里:Collaborative editing for .NET development - what are the possibilities,但它没有给我任何有用的东西,我将解释原因:

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

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

<edit>

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

<edit2>

我也遇到了BeWeeVee,它有一个Visual Studio扩展程序用于它的服务,但它的所有链接都已经死了。而CodeALike可能是他们对VS实时协作的替代,它有一个FAQ条目,说明它的实时功能已被删除,并将在&#34; future&#34中重新实现;

问题#2:

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

2017年更新

由于在评论中表达了一些持续的兴趣,我创造了一个让我们能够聚集任何有兴趣并有可能实现这一目标的人:https://gitter.im/sof-centrailized-collab-editing/Lobby

3 个答案:

答案 0 :(得分:3)

如果您想自己解决这个问题,您可能希望将其作为Visual Studio扩展来实现。请注意,有两种不同类型的插件:“附加组件”和“扩展”。我个人认为你应该写一个扩展名,但不管怎样,你可以用C#编写它们。

您需要挂钩Visual Studio的文本编辑器。您可以谷歌了解如何执行此操作,或者只查看现有示例:a Visual Studio extension for elastic tabstops。您的扩展程序必须在进行更改时监视更改,然后通过您设计的某些协议将其发送到服务器。您必须自己编写服务器,但在第一个版本中,它只需要将编辑内容发送给使用该扩展程序的其他人。然后,扩展程序将在每个人的编辑器中编辑每个人。

如果有人使用旧版本的代码连接到服务器,则扩展程序可以从服务器下载最新版本。但是,如果用户在离线时进行了编辑(即未连接到服务器时),则需要进行一些巧妙的合并。这是非常重要的,但我知道该怎么做,因为我之前已经完成了。如果你问得很好,我会为你编写合并算法。然后你只需要提供三个文本文件:基础(最后与服务器同步的版本)和两个编辑版本(离线编辑的版本和服务器的最新版本)。

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

答案 1 :(得分:2)

好吧,看到其他人输入内容然后在编辑器中使用它们进行光标战已经由Google Wave完成了。 Iirc在项目本身失败后被推出了开源或者其他东西。它确实处理了所有更新问题,并建立在从计算机科学角度来看非常强大且可靠的基础更新模型上。它提供了与源代码系统类似的历史和各种事物。

您可以在此基础上实现您想要的特殊编辑小部件。如果你做得很好,你可以将Google Wave复活为一个有用且有用的协作编辑平台。

答案 2 :(得分:1)

关于VS Anywhere,可能,当你尝试VSA时(5月左右),软件版本是Release Candidate 2(= buggy),所以正常你发现了SVN Integration的一些问题以及我们遇到的问题TFS和Git。

目前,在最新的RC3上,一些SVN问题已经解决,我们希望尽快为最终版本做好准备

您可以在LAN中运行自己的VS Anywhere Server实例,因此您实际上不需要使用我们的公共服务器,如果您是学生或者您有开源项目,则VS Anywhere客户端和服务器是免费为您服务,如果不是商业用途,您需要支付少量费用。

如Timwi所述,离线编码的重新同步非常重要且实施起来非常复杂,我们认为SCM是完成这项工作的正确工具,这是因为我们还没有朝着这个方向努力,我们的观点是至少在我们处理这个领域之前,您可以使用标准SCM来提取最新更改并在设置会话之前与本地副本合并

VSA将简化引导会话的过程,允许您1)检查远程Visual Studio副本的差异,2)如果有的话,将它们合并到本地副本中以使其处于正确状态,就在打开会话时。 (“1)”实施“2)”即将到来)

会话管理不是一件容易而且非常复杂的事情,有很多可能的场景,这是因为我们在完成后清理会话,但是你可以随时再次启动会话,只需点击一下......

希望此信息可以帮助您,如果您有更多问题,请随时与VS Anywhere支持小组联系

关于如果你想开始一个项目来实现这样的插件我们可以为你提供有关如何做事的信息,一个很好的起点是了解操作转换,因为你需要这种方法来实现并发编辑,你也需要用于在客户端之间传输数据的P2P或客户端/服务器协议。