2011-07-24 33 views
2

背景:我们是一家小型网络开发公司。我们有5个程序员,其中70%的时间产生简单的PHP网站(一些MySQL用于新闻/产品目录/等),30%的时间我们在大型项目(通常是定制的ERP系统)上工作。我们有一个位于办公室的中央服务器,在所有用户(和服务器)之间使用Linux,并通过简单地安装服务器并在我们需要工作的目录(网站项目)中工作。目前这工作正常。有两件事情,让我考虑版本控制:使用版本控制需要多少开销时间和学习时间?

  • 一个prettystrongcase由无数的网站,个人,等
  • 潜在的问题时,该公司的成长和几个人在一个工作在未来可能出现的项目在同一时间。

然而,尽管有见过提的原因,当不使用版本控制敲定下来的人,我有一定的犹豫是由于以下几点:

  • 我们做了很多的变化,但他们通常非常小的变化。
  • 它几乎从来没有发生,我们需要扭转变化。
  • 我们进行频繁的备份,可以用于需要某种'先前'的情况下
  • 几乎没有发生过几个人同时在同一个代码上工作。由于不同的人负责不同的开发阶段(HTML/CSS/PHP/MySQL),因此项目通常会“流动”,因此不同的人可能会遇到不同的问题。
  • 当项目更复杂时,我们将其分配给一个人。
  • 我们几乎与工作忙得不可开交,现在

所以我看到的版本控制的好处,但我只是关心开发网站时所花费的开销。我以前从未使用过这样的系统。我觉得现在事情变得如此简单快捷,以至于我们在使用VC时会失去时间。如果您想要在一天中对20个不同的网站进行20个小改动,那么检入,检出等等会加起来。至少,这是我的想法。所以我的问题是:我们是否应该比以后更早地转向VC,还是现在我们不应该失去时间?这很难学习吗?最后,GIT比SVN更耗时(学习&使用)? (我喜欢GIT的非集中化方面,但这不是必需的)。

注意:我们都使用常规文本编辑器(如VIM或jEdit)进行编码。

+0

并不多。这是完全值得的。 –

回答

5

对于你所描述的场景,版本控制应该是简单来处理 - 因此开销应该非常低。举例来说,与你所描述的东西,所有你基本上需要做的是(GIT的例子):

  1. 开始工作:git pull
  2. 做的工作(通常你已经这样做)
  3. git add .(在顶级目录)
  4. git commit -m "A quick message saying what you did"
  5. git push

就是这样。

+2

我发现Git比SVN复杂得多,所以从我的角度来看,它在学习它时会有更多的开销。这就是说我同意琥珀......考虑到你所描述的工作流程,你所描述的应该是你现在需要真正知道的。当你需要知道更多的时候,你可以担心学习分支/合并,存储以及git提供的所有其他东西。 – prodigitalson

+0

这看起来非常简单。我们不应该为每个网站创建子项目,或者我们可以将它们组合在一个项目下,这样我们就不需要切换了? – user852091

+0

@ user852091您可能会发现*更容易*拥有单独的存储库(假设您的项目通常位于单独的文件夹中)。设置git repos并不困难(服务器上的'git init --bare')。 – Amber

1

使用托管型解决方案,如github上或类似的供应商,你最多可以在30分钟左右运行,并能够进出检查代码。更高级的功能和使用VCS的能力将与时俱进。随着VCS变得更加舒适和知识渊博,您甚至会开始使用版本控制来帮助更快地追踪错误(git bisect等...但现在不用担心)

1

即使您决定要使用除版本控制以外的其他内容,建议您阅读the first three chapters of the subversion book。所有流行的版本控制系统的命令在工具之间并没有根本的不同(即使是分发系统),它将巩固从10000英尺视图和1英尺视图使用版本控制手段的日常细节视图。

它很快将成为明显的是,使用版本控制不的时间量添加到您的开发过程。大约需要20秒钟的时间,而小的时间则需要2到3秒钟。比试图研究档案的20分钟便宜得多,这些档案找出了模块中是否有变化(假设你对每个“构建”都有简单易懂的归档,我知道你认为这样的事情永远不会发生,但如果你即使有一次,它也可能会付出代价

此外,没有版本控制,你怎么知道你是最新的变化不仅仅是重新引入了六个月前所做的更改所删除的问题? 。是一个很好的工具,但它远​​没有犯错

1

使用版本控制,应该是没有问题

你说:

它几乎从来没有发生,我们需要扭转的变化。

通过这种逻辑,任何人都不应该系安全带,因为实际上每个人每天都安全地驾车。

在某些时候,你需要回到一个旧的变化,并具有SCM是正确做到这一点的唯一方法。想想单片机作为备用降落伞,你希望你永远需要它,但出问题的时候,那是一种生命安全


你也说使用SCM是太多的开销。我不明白你如何支持这一声明。对于一个初学者来说,设置和使用基本git的时间应该只需要几个小时,在弄清楚之后,可能会在当天增加几秒或1到2分钟的时间。而已。

你可以做的一件简单的事情就是指示每个开发者安装一个cron命令,每隔1个小时左右检入一次本地存储库并推送到你的服务器。现在我不推荐这样做,但是通过这样的设置,你不会再需要再次考虑SCM,然后当你需要它时,它就会在那里。其次,一旦你开始使用像git这样的SCM,你会发现它已经成为你日常活动的组成部分。谁不使用SCM可能不明白,你缺少的特征的人:

  • 的代码分支之间即时切换
  • 撤销临时更改任何保存点,后来重新申请
  • 自动合并从多个开发商
  • 变化的谁是最后一个改变路线,或谁是原作者
  • 有当/什么在你的代码是变化的时间记录的记录
  • 能够同步错误和代码提交。
  • 等...

我希望这说服你!祝你好运。