软件开发中的多个程序员。 我们如何处理相同的代码,并确保它始终更新?

这似乎是我现在应该知道的事情,但不pipe出于什么原因我都不知道。 我也没有太多的运气在这个话题上search。

一个朋友和我一起开始一个简单的项目,远离工作,我们都在编程世界很年轻,想要为我们的空闲时间做一个简单的教育项目…我的问题是,我们希望能够在同一个项目上工作,并相应地更新文件,而不需要我们不断地相互共享文件。 我确信那里有软件是为了这个目的而存在的,或者是我们可以使用的某种共享客户端。 问题是,我不知道从哪里开始寻找。

一些简单的build议,如何或用什么来帮助这个项目更顺利地进行将是很好的。 这首先是我们为什么这么做的重要组成部分。

更新:

经过一番研究,我决定使用龟SVN。 用于Windows更新/提交文件到您的托pipe服务器的简单的右键点击插件是非常容易和用户友好的..

额外澄清

我问了这个问题已经有好几年了,我从中学到了很多东西。 如果你在这里有同样的问题,我build议你研究“源代码控制”。 我原本接受了一个build议颠覆的答案,甚至说我以“我的客户端连接到颠覆”作为“乌龟SVN”。 就像我们学习的所有东西一样,我现在使用的主要源代码控制是Git。 它有一个更大的学习曲线,但我可以诚实地说,它是更强大的。

听起来就像你需要一些源代码控制! 你有没有看过Subversion(SVN)呢? 有一个真棒Windows客户端称为TortoiseSVN 。 两者都是免费和开源的。

您可以在其中一台机器上或某个Web服务器上设置Subversion服务器。 然后,你们都会定期将更改提交给服务器,服务器pipe理诸如修改,附加提交的注释等。使用客户端,您可以执行诸如查看修订和合并更改之间的差异(自动或手动)在文件中。 这也使得将其他开发者添加到您的项目中变得很简单,只需让他们访问您的Subversion服务器即可。 有Eclipse和Visual Studio的 SVN 插件 ,或者您可以使用TortoiseSVN,它可以在命令行上独立运行,并与Windows shell(见下文)集成。

TortoiseSVN shell整合http://olex.openlogic.com/wazi/wp-content/uploads/2009/03/create_repo_tortoisesvn.png

我最喜欢TortoiseSVN的东西是完全独立于语言或者IDE,我可以在Eclipse中使用Java项目,VS2008的.NET项目或C / C ++中的驱动程序开发。

请注意,TortoiseSVN附带的SubWCRev工具也公开了一个COM接口 ,可以让你做一些很酷的事情,比如编程检查谁做了最后一次提交以及什么时候,什么是最新版本号等等。我提到这个是因为没有太多的除了TortoiseSVN文档外,还有关于这方面的信息,最近我写了一个用于.NET项目的VS2008插件,可以自动同步修订版本号和增量版本号。

许多网站为开放源代码项目提供免费的SVN存储库访问权限(或者封闭源代码/商业产品的付费访问),例如Google Code和Sourceforge 。 如果你是一个团队项目的学生,这些在线知识库也可以对项目工作非常有帮助。

您正在寻找的软件types是源代码pipe理(也称为修订控制)。 这是一个巨大的话题,但我会先在Wikipedia中查找,然后寻找一种与您使用的语言和工具配合使用的源代码pipe理types。 (例如,Team Foundation Server作为Visual Studio的一个选项,SVN提供了一个全面的解决scheme,等等)

你最终会询问使用哪个源代码控制工具的build议。 对于我们的团队,我们使用SVN(又名SubVersion),这是一个非常好的免费开源解决scheme,可以与几乎任何东西一起工作。

维基百科链接:

http://en.wikipedia.org/wiki/Revision_control

简单的答案是你想要某种版本控制软件。

更复杂的答案是, 使用版本控制比使用版本控制要容易得多,或者使用得更好。

如果你刚开始,select一个易于使用的工具是关键。 Subversion是一个不错的select,因为它有一些很棒的GUI实现,但是一旦你开始进入命令行级别,它仍然提供了很大的能力和灵活性。

但是,select哪种版本控制系统并不像培养使用习惯那样重要,它可以让你真正利用你的工具。 有经验的开发人员使用最好的工具,仍然可能会陷入devise不佳或pipe理不善的源代码库中。

有几件事要考虑:

  • 如果你不是经常性地更新你的回购作为例行公事,那么当你需要它的时候没有什么用处。

  • 学习不同的人对最佳实践的看法是有用的,但有时候最重要的因素就是有一个标准,每个人都理解并同意这个标准。

  • 回购组织是高度依赖于path的。
    当你的项目开始时,安装和拆卸很便宜。 开始时不要害怕挑剔组织结构。 这可能是唯一的一次。

如果你愿意学习一些关于Git的知识,那么你可以在github.com上主持你的工作,而且还可以单独工作。

当两个或更多开发人员在同一个项目上工作时,有两件事情是重要的。 首先是使用的工具,其次是商定的过程。

工具的使用,在你的情况是非常简单的。 select一个版本控制系统并学习使用它。 select很多,但最重要的因素是工具支持。 例如,对于Windows用户(TortuiseSVN,ToruiseCVS,TortuiseHg)来说,这种折磨types的工具是非常好的,因为它们集成到Windowsshell中,并通过在其上应用不同的图标(红色感叹号用于更改,绿色好吧等)。

第二,最重要的部分是过程。 大多数球队都打破了这一点,需要时间来采取一切行动。 你和你的搭档必须就同一个过程达成一致,你们都需要遵循。

这个过程将包括基本的文件夹组织,将要放置什么,在哪里,如何以及何时提交/签出,以及将要input什么样的代码。

在我看来,这里有两件重要的事情:

  1. 代码库中的代码必须始终可以构build,因为其他人可以继续工作而不会出现问题

  2. 每个人都需要知道应该放在哪里以及在哪里,例如一个文件夹将被选为源代码,另一个用于数据库等。

这是一个简单的过程的例子:

  1. 安装存储库服务器(svn,mercuiral等)。 对你来说唯一的区别就是工具支持。
  2. 同意共同的存储库结构(Documents,Source,Extras)
  3. 每天开始更新
  4. 在每次提交从资源库更新之前经常提交
  5. 在每一天的结束提交

研究来源控制。 这里有一个很好的介绍:

http://www.ericsink.com/scm/source_control.html

许多可以在网上免费或收取less量费用,所以你和你的合作伙伴可以通过互联网进行协作,除非你有一个共享服务器的情况下,那么你可以去许多源代码控制客户端的路线(如SVN与乌龟和这样)。 否则,GitHub(而不是唯一一个)是一个分布式源代码控制系统。 起初可能有些压倒性的,但这只是一个例子。

在过去的6个月里,我已经搬到了GIT,对此我感到非常满意。 但一般情况下,cvs | svn | git是最常见的开源SCM(源代码pipe理),其中任何一个都应该能够满足您的需求。

“或某种共享客户端,我们可以使用”

源代码控制可能是官方推荐的方法,但共享文件的最简单方法是安装DropBox之类的东西。

您注册一个免费的2GB帐户,并使用您与您的朋友共享的用户名/密码。 然后在你的朋友PC上安装DropBox客户端,并使用共享帐户。

一旦运行Dropbox在名为“My Dropbox”的我的文档下创build一个文件夹。 现在,您在该文件夹下执行的任何操作(例如创build,编辑,删除文件和文件夹)都将自动同步到朋友PC上的“我的Dropbox”文件夹,反之亦然。 互联网访问是所有需要的。

您还可以获取文件的历史logging和修订版本,以便在需要时回滚并恢复到早期版本。 如果您同时在同一个文件上工作,就像源代码控制一样,您需要手动合并这些文件,但在这种情况下,Dropbox会保存“冲突副本”。

我已经使用了Dropbox自己近一年,并且非常满意它的易用性。 我不为Dropbox工作,或与他们有任何其他的事情,然后成为一个快乐的用户。

一个“真正的”源代码控制系统主要为您提供自动备份,恢复到早期版本的能力以及多用户编辑源代码的pipe理,Dropbox也是如此。

这是一个非常简单而又重要的问题。 这是一个源代码版本问题。 我自己的经验告诉我要避免主stream的Dropbox和Co解决scheme,因为它们不是源代码友好的。

看着你想要的post:

  1. 简单易用的设置和使用
  2. 共享代码(浏览和修改)
  3. 看到谁修改了什么和什么时候

我会推荐Git,因为这三者的基础工具Git和Github.com或Bitbucket.org的答案。

CVS和SVN很重,没有像Github或Bitbucket那样的非常方便的网页界面。 即使我是一个伟大的CVS粉丝,并转移到SVN,我必须承认,与新的Git和类似的系统相比,他们正在品尝非常古老。