c# - Visual Studio 中的集中实时协作编辑

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

现在,在您因为我提出关于 SOF 的重复问题而对我开枪之前,让我首先准确地向您介绍我正在寻找的内容,然后我将解决其他问题和答案以及为什么它不够。

问题 #1:

我正在寻找一种方法来执行实时协作编辑,同时将源代码维护在中央源代码控制服务器上。例如,如果我和 Joe Blow 正在编辑文件 X.cs同时,我们应该能够在键入时看到彼此的编辑。几乎就像我们坐在同一台电脑前一样。现在假设以下场景:我和 Joe 下线,Nimha Smith 决定更新一些代码。当我第二天重新上线时,我收到了 Nimha 在我 sleep /离开服务器时更新的代码。

这是实时协作的思想与SVN等源代码控制系统的结合。

解决可能的重复问题:

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

  • VsAnywhere :它通过中央公共(public)服务器运行(正确的方向..?),除了所有相关方在加入 session 之前需要在他们的机器上拥有完全相同的代码,一旦你离线 session 就会被破坏。
  • 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 条目解释说它的实时功能已被删除,并将在“ future ”重新实现。

问题 #2:

现在这让我想到了问题的第二部分,因为我完全意识到可能没有适合我的高要求的程序。我可以从哪里开始自己实现此类软件?是否有一些现有的开源源代码控制/实时编辑代码,我可以开始构建它来创建它?或者如果我想实现这个,我是否会从头开始。我相信您可以通过标签看出我愿意在 C# 中解决这样的任务,如果我必须解决的话。

2017 年更新

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

最佳答案

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

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

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

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

关于c# - Visual Studio 中的集中实时协作编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694373/

相关文章:

svn - 有没有办法找出上次更新之前的上一个本地修订版本的修订号?

c# - 如何在 Compass Windows Phone 8 中获取 Qibla 方向?

c# - 带参数的 HTTP 摘要认证

c# - 在 .NET/C# 中组织和使用 Google Analytics 数据?

visual-studio-2010 - Visual Studio 2010 在哪里存储文件菜单的 “Recent Projects and Solutions” 项?

visual-studio-2008 - 可以在 vs2010 中使用 vs2008 项目文件

git - 在 Git 中尝试还原时发生冲突

c# - C# 中的线程安全属性

c++ - 在 VC++ 2010 中,项目依赖项并不意味着链接?

git - 为什么git获取origin master :master fast forward the local branch?