现在,在你因为我提出了一个关于SOF的重复问题而开枪之前,让我先告诉你我到底在寻找什么,我会回答其他的问题和答案,以及为什么它是不够的。
问题#1
我正在寻找一种执行实时协作编辑的方法,而源代码是在集中的源代码管理服务器上维护的。例如,如果我和Joe同时编辑文件X.cs,我们应该能够在键入时看到对方的编辑。就好像我们坐在同一台电脑前一样。现在来看看下面的场景:我和Joe离线,Nimha Smith决定她想要更新一些代码。当我第二天回到网上时,我被推送了Nimha在我睡觉/离开服务器时更新的代码。
这是一种结合了实时协作的思想,以及像SVN这样的源代码控制系统。
可能的副本的寻址:
这里有一个类似的问题:用于.NET开发的协同编辑--有哪些可能性?,但是它并没有给我任何有用的东西,我将解释为什么:
显然,这个问题和这一个是直接涉及源代码管理软件如SVN或GIT的问题。现在,我试图让VSAnywhere和SVN一起玩得很好(SVN用于脱机时进行更改,VSAnywhere用于在线开发人员),但它根本不起作用。
<edit>
我最近发现了一个名为科拉布的学士论文项目,这似乎是个好主意,但我似乎无法让它发挥作用。如果其他人在这方面有任何成功,请告诉我你做了什么。看起来,如果我能让这个collab项目发挥作用,这似乎是一个很好的开始,创造一些东西来满足我的需要。
<edit2>
我还遇到过BeWeeVee,它为它的服务提供了Visual扩展,但是它的所有链接都死了。CodeALike可能是VS实时协作的替代品,它有一个FAQ条目,解释说它的实时特性已经被删除,并将在“未来”重新实现。
问题2:
这就引出了我问题的第二部分,因为我完全意识到可能没有一个符合我的要求的计划。我从哪里开始自己实现这样的软件呢?是否有一些现有的开源源代码控制/实时编辑代码,我可以开始构建,以创建这个?或者,如果我想实现这一点,那么我是否从零开始就被困住了。我相信你可以从标签中看到我想要在C#中处理这样的任务,如果我必须解决它的话。
更新2017年
由于对这些评论表示了一些持续的兴趣,我创建了一个gitter,我们可以在这里聚集任何感兴趣的人,并可能使其成为现实:https://gitter.im/sof-centrailized-collab-editing/Lobby。
发布于 2012-06-06 19:11:40
如果您想自己解决这个问题,您可能希望将其作为Visual扩展来处理。请注意,有两种不同类型的插件:“外接程序”和“扩展”。就我个人而言,我认为您应该编写一个扩展,但无论哪种方式,都可以用C#编写它们。
您将需要连接到的文本编辑器。你可以在谷歌上搜索如何做到这一点,或者看看一个现有的例子:用于弹性制表符的Visual扩展。您的扩展将必须在您进行更改时监视它们,然后通过您设计的协议将它们发送到服务器。您必须自己编写服务器,但在第一个版本中,它所能做的就是将您的编辑发送给所有使用扩展的其他人。然后,扩展将使每个人都在其他人的编辑器中编辑。
如果有人用旧版本的代码连接到服务器,扩展可以从服务器下载最新版本。但是,如果用户在脱机时进行了编辑(即没有连接到服务器),那么您将需要进行一些巧妙的合并。这不是件小事,但我知道怎么做,因为我以前就做过。如果你问得很好,我会为你写合并算法。然后,您只需要为它提供三个文本文件:基(最后与服务器同步的版本)和两个已编辑的版本(一个离线编辑,另一个是服务器上的最新版本)。
如果您设法使它工作,您可能会创建一些无效的有用的东西。请务必公布你的工作!:)
发布于 2012-05-24 00:07:48
好吧,看到其他人在编辑器中输入一些东西,然后和他们进行光标大战,已经由Google完成了。在项目本身失败后,Iirc就被作为开源或什么东西被推开了。不过,它确实解决了所有的更新问题,并且建立在一个底层的更新模型之上,从计算机科学的角度来看,该模型是非常健壮和可靠的。它提供了类似于源代码系统的历史和各种东西。
您可以在此基础上将所需的内容作为一个特殊的编辑小部件来实现。如果你做得很好,你就可以将Google重新命名为一个有用的合作编辑平台。
发布于 2012-06-28 21:47:47
关于VS,可能是在您尝试VSA时(5月左右),软件版本是候选版本2 (=buggy),所以正常情况下,您会发现SVN集成存在一些问题,而TFS和Git也有一些未解决的问题。
目前,在最新的RC3上,一些SVN问题已经得到解决,我们希望很快就能为最终版本做好一切准备。
有可能在局域网中运行您自己的VS Anywhere Server实例,因此您实际上不需要使用我们的公共服务器,如果您是学生或您有一个开放源码项目,VS Anywhere Client and Server对您来说是免费的,如果不是用于商业用途,则您应该支付少量费用。
正如Timwi从离线编码中进行的重新同步表示的那样,我们认为SCM是完成这项工作的正确工具,这是因为我们还没有朝这个方向工作,我们的意见是,至少在我们处理这个领域之前,您可以使用标准SCM来提取最新的更改,并在设置会话之前与本地副本合并。
VSA将简化引导会话的过程,允许您检查来自远程Visual副本的差异;如果存在,则将它们合并到本地副本中,使它们在打开会话时处于正确的状态。(“1”已实施"2)“)
会话管理不是简单而复杂的事情,有很多可能的场景,这是因为我们清理完会话,但是您可以在任何时候只点击一次就可以再次启动会话。
希望此信息对您有帮助,如果您有更多问题,请随时与VS Anywhere支持联系。
如果您想要开始一个项目来实现这样的插件,我们可以向您提供有关如何做事情的信息,一个很好的起点是理解操作转换,因为您需要这种方法来实现并发编辑,还需要一个P2P或Client/Server协议来在客户端之间传输数据。
https://stackoverflow.com/questions/10694373
复制相似问题