我在家里和学校与朋友一起工作。在学校中,除端口80和端口443(HTTP / HTTPS)之外的所有端口均被阻止,因此很难设置协作的“工作区”。
我正在寻找一个程序来在我们的计算机上创建虚拟文件夹桌面(例如Groove),我们可以将其放入项目中,然后将文件写入磁盘(使用我们选择的文本编辑器或IDE)时,所做的更改将自动分发到所有计算机上。
它应该是可移植的(不需要管理员权限),并且最好是免费的。
这种程序甚至已经制作出来了吗?
这是我到目前为止尝试过的:


Google云端硬盘/ Dropbox。界面过于笨拙,由于需要管理员权限,因此我无法安装客户端。另外,您必须向其他所有人宣布您正在上传项目的副本,然后其他所有人必须停止他们正在做的事情并再次下载该项目。这很烦人和痛苦。

GitHub。尽管这是一个非常可行的选择,但我的朋友们对如何使用Git知之甚少,而且我担心他们会陷入合并冲突中(他们以前曾经遇到过),但他们会强迫推销并丢失所有历史记录,或者只是没有完全执行任何操作。

Saros for Eclipse。要求打开Jabber端口以进行传出连接,但没有打开。为了使用此功能,我必须在本地运行Openfire(Jabber服务器),但是我忘记了备份配置,因此当IT管理人员决定从Windows XP升级到Windows 7时,Openfire永远消失了。

用于记事本++的NppNetNote。完美,但仅支持一对一协作。

SharePoint工作区。这看起来很酷,但是我不确定如何邀请其他成员。

Etherpad。您不能使用自己的IDE,这意味着您必须将文件的版本复制/粘贴到便笺本中。另外,它仅用于单个文件中的协作。

小花。我的朋友尝试在Sublime Text上使用此功能,但它要求您连接到非HTTP端口(已阻止)。

Firepad for Atom。遗憾的是,您不能与此共享整个代码库。

松弛。您当然可以共享代码,但是与Google云端硬盘一样,zip,上传,宣布,下载过程过于笨拙,不切实际。

没什么。一次只能有一个人可以编码。如果多个人同时进行编码,则最终必须有人要求每个协作者的工作源,并手动将所有文件合并在一起。


评论

大多数编码员宁愿没有立即合并所有更改。随时让您暴露于任何人的错误。最好每天同步一次。

@ Jeff-InventorChromeOS如果大多数开发都集中在单个文件上,并且我们需要该文件才能使其他所有文件正常工作,那么我们都会以不同的方式在单个修订版上进行开发,从而引起冲突。将3个不同的修订组合成一个整体所花的时间要比仅进行实时协作并知道彼此对代码所做的事情要花费的时间更长。

@ oldmud0在这种情况下,也许您是从错误的角度来进行开发。是否可以将一个文件中包含的功能分成多个不同的段?文件大吗?它只是一个配置文件吗?您正在使用哪种语言/ IDE?

@ oldmud0团队中的每个开发人员都有明确的目标和责任吗?即是负责渲染的人,负责物理的人,负责UI的人,等等。我想如果这样做,每个人踩到对方脚趾的机会就会减少。

两个用户同时编辑同一个文件应该怎么办?

#1 楼

Codenvy是一个纯Webapp IDE,可能符合您实时协作的要求。看起来像一个相当完整的IDE,完全可以在Chrome中运行。

根据发布者:


环境是协作的,工作区可以像WebEx一样在屏幕上共享
像WebEx一样,协作像Google Docs一样,而分叉像GitHub。


(它也与BitBucket集成。)

#2 楼

我认为您应该重新考虑几个人实时编辑单个代码文件的想法。在教学或结对编程(即,在同一件事情上工作)时,这可能很棒,但对于不同的事物却不行。您将严重踩到彼此的脚趾,无法完成任何工作。本质上,您将具有与在VCS中进行“合并”时相同的代码冲突,但是您将不断使它们发生冲突。由于别人的代码半成品,您几乎无法在任何时间编译程序,更不用说测试自己的工作了。您还会发现很难从IDE提示,错误信息,代码完成等中受益。

并行开发很像并行计算。性能不会线性扩展。扩展类比,获得最佳的并行性能来自最小化同步。最好的加速来自“令人尴尬的并行”问题,其中每个节点都完全独立地工作。最差的加速来自于算法,该算法在每一步都需要来自所有其他节点的数据。

VCS方法是一种很好的方法。每个人都签出可编译的或多或少有效的代码版本。他们进行更改而不会受到其他任何人的干扰。通常情况下(从每周一次到每小时一次,这取决于代码更改的速度)是最佳的,它们通过提交代码并制作可编译和工作的新版本的代码库进行同步。其他人则拉动了这一变化,也许进行了必要的调整,然后继续工作。请记住,无论如何同步都是必要的,但是将同步保持在最低限度可以使人们专注于有用的工作。

Git很好地解决了VCS目标。拉/推/合并的工作比其他VCS更好。它具有陡峭的学习曲线和通常较差的GUI(在Windows上),但是它是一个非常有用的学习工具。您提到强行推销和清除历史记录。您是正确的,这是非常不希望的,这就是为什么应该通过配置开关在服务器上禁止强制推送的原因。
但是,如何开发依赖于彼此的功能的问题仍然存在。如果您进行实时编辑,它不会消失甚至不会消失。一种方法是利用模拟对象。这些是伪造的对象,它们会返回固定的响应(而不是执行真实的逻辑)。它们在单元测试的上下文中使用,在单元测试中,您将针对特定用例测试编写的代码。编写使用模拟的单元测试可以让您测试用例,从而测试您的代码,而无需编写相关的部分。另一种方法是简单地编写代码,而不进行任何测试,然后在实际代码可用时进行测试。但是,在最后进行测试和修复错误更加困难,特别是对于新程序员(他们犯下许多小而愚蠢的错误,这些错误使他们日后无法解决)。但是,编写模拟和单元测试需要花费自己的时间。 (这些方法可以长期解决问题,因为它们可以在不引入新错误的情况下帮助更改代码,但是从短期来看,它们可能不会提高生产率。)无论哪种方式,请考虑如何最好地分拆工作。

评论


请允许我提醒您,我们没有得到报酬;我们不是一家创业公司。我们连续四个小时不工作。我们没有时间使我们的程序成为具有企业质量的应用程序。是的,您是对的,我们应该进行单元测试。但是我们不是100%错误的。我们正在采用正确的方法,并询问其他人实时协作的最佳方法是什么。

–oldmud0
2014年8月10日23:47

抱歉,这不是要使其具有企业质量。您说自己“开发不能并行进行”。从根本上讲,如果开发不能并行进行,那么寻找可以同时编辑文件的程序就没有意义了吗?我试图解释一种使开发并行进行的方式(使用模拟和人工测试而不是运行)。

–亚历山大·杜宾斯基(Aleksandr Dubinsky)
2014年8月10日23:55



为了澄清,我的意思是说开发不能与我们目前拥有的系统并行进行。目前,我们没有进行任何开发,因为我们最近没有见面。 (我们甚至还不是大学生。)我将为您省掉我刚要讲的话。

–oldmud0
2014年8月10日23:58

我之所以投票,是因为这是一个软件推荐站点,而不是一个争论的哲学。您的观点可能是有史以来最有效的观点,但这并不是要这样做的地方。

–赛斯
2014年8月11日17:47

我同意这个答案,建议您阅读weblogs.asp.net/alex_papadimoulis/408925。有时,告诉用户他们的问题从根本上来说是有缺陷的,比给他们想要的答案更有价值。

– DanteTheEgregore
2014年8月13日15:42



#3 楼

Codeanywhere在其网站上表示,它们是开发人员的协作平台。他们有一个非常不错的基于Web的编辑器,可在任何浏览器上使用,因此防火墙不是问题。使用Codeanywhere可以创建DevBox,它基本上是一个小vps,可以自定义任何方式,可以运行几乎任何编程语言,并且在编辑器中内置了ssh终端。
然后,您可以与共享项目您的朋友甚至可以实时协作(多个用户实时编辑同一文件)。

#4 楼

对方的回答非常适合显示您为什么不想这样做,但是如果您准备进行协作(我认为这样做有一些好处):您是否尝试过c9.io。那似乎正是您要寻找的。我已经使用此IDE做了大量工作,并且我认为这可能是最好的在线IDE。并提供了几乎完整的终端支持,这对各种服务器工作非常方便,它为Sublis提供了几乎相同的工作空间,可用于下载或安装新的Python或节点程序包。非常慢的程序包,非常慢的程序。总体而言,这似乎是一个非常好的选择。尤其对于协作而言,如果您确实想进行协作,就像其他人指出的那样,这可能不是最佳选择,那么这似乎是完美的,并且尽可能地接近。

评论


是;它具有SSH,看起来非常有用。免费版本看起来有些有限,但我一定要请我的朋友尝试一下。

–oldmud0
2014年8月12日下午2:37

作为一个实验,我让一个由8个人组成的团队使用c9.io开发HTML + JQuery网站。当人们在处理不同的文件时,它工作得很好,但它经常破坏同时由几个人编辑的文件。那是一年前,他们可能已经有所改善。

–尼古拉斯·拉乌尔(Nicolas Raoul)♦
14年8月14日在10:29

@ JZL003您自己尝试过此工具吗?您有什么经验?目前,它仅比“查看此链接”略多一点,对于推荐来说太少了。

–安吉洛·福克斯(Angelo Fuchs)
2014年8月15日在13:46

#5 楼

您考虑过Bitbucket吗?

您在问题中提到尝试过Github,但我想提请您注意另一种选择。

Bitbucket与Github不同,它提供了无限的免费私有存储库,并具有禁用强制推送的功能。

Bitbucket支持多个版本控制系统,但是我强烈建议您的朋友再看看git。尽管有时可能会有些困难,但是git确实比我尝试过的任何其他工具都要好。

评论


我再来看一下Git。这只是学习的问题。 Bitbucket是否具有一些“便利”按钮来执行操作而无需准备控制台? (GitHub有其自己的客户端,并且它具有用于发出快速拉出请求或制作/删除/编辑单个文件的按钮。)

–oldmud0
2014年8月10日19:20

该软件应该通用-因为它依赖于协议而不是主机。也就是说,有很多适用于所有类型平台的开源git客户端。 git-scm.com/downloads/guis有一个不错的列表(但并不全面)。

–梯形
2014年8月10日19:29



对于Github和Bitbucket(或任何其他提供程序),您可以使用Atlassian SourceTree来管理您的gitting。我发现它非常易于使用,并且几乎每个操作都有方便按钮。

– Kroltan
14年8月11日,0:45

#6 楼

为了回答“我正在寻找一个将创建虚拟文件夹的程序”的问题,我建议Bittorrent Sync作为一款不错的无云Dropbox风格的文件夹同步应用程序。它带有安装程序,但是我相信它也可以移植。 AFAIK,它应该自动通过HTTP中继以绕过防火墙。 SyncThing作为开源的无云Dropbox风格文件夹同步应用程序。

#7 楼

我一周前就开始使用ownCloud,但感到惊讶的是,当扩展了某些可用的“ ownCloud应用程序”后,它甚至可以用于您的情况。由于具有80和443端口,您甚至可以在某些外部计算机上托管安装(ownCloud也提供托管)。桌面客户端也可用于多个平台(不确定我是否还需要安装“否”,因为我还没有使用它们)。

尽管文件夹不在本地计算机上桌面(除非您决定通过WebDAV进行本地工作和同步目录,这也是一种选择),它可以很好地满足您的要求:

ownCloud包含一个支持代码折叠的编辑器,它可以可以多种方式进行扩展(例如,与Markdown插件一起使用,因此编辑器甚至可以实时预览)。甚至还支持OpenDocument Text。您可以在一个组中共享文档,因此可以进行协作。因此,基本上,可以“在线”完成工作。

另一个优点是对您的文档进行了自己的Cloud版本控制。因此,如果遇到麻烦,您可以还原到以前的版本之一。

正如您提到的EtherPad:甚至还有可用的EtherPad ownCloud应用程序,与该服务集成。

我必须承认还没有以协作的方式使用过ownCloud,所以我不能说这与多个用户同时编辑同一个文件的效果如何–但我想至少值得一看。

评论


好了,在这种情况下,我最好在自己的家庭服务器上的端口443上建立SSH隧道并托管SSH,这样我所有的朋友都可以在服务器上的共享驱动器上工作。

–oldmud0
2014年8月11日12:54