2014-03-04 40 views
0

我们是一个由两名开发人员开发PHP/MySQL应用程序的团队。我们一段时间以来一直在使用Netbeans/TortoiseHG,但由于我们的项目没有跨越,开发相当简单直接,我们一直在使用Mercurial主要有一个中央存储库,我们都可以找到最新的任何其他人正在处理的版本。NetBeans,PHP项目上的TortoiseHG和版本控制

到目前为止,发展路径遵循非常简单的步骤:

  1. Netbeans中的龟创建项目
  2. 创建库
  3. 有这种龟仓库的一个克隆的共享空间
  4. 作为发展进程,承诺,推动(如果我们其中一个人不得不在他缺席的情况下更改其他项目),并拉动。

正如您所见,非常简单且有限,但足以满足我们的需求。

但是现在我正在开发一个需要真正版本控制的项目。在我而言,这意味着我需要保持两个单独的和独立的发展道路,一个用于生产,一个用于开发:

  • 一个版本(我们称之为1.0)将反映的是生产和意志根据需要进行更新。这里的发展将基于生产中发现的错误和用户的要求; (这些更改可能必须传播到“其他版本”;
  • 其他版本(让我们说2.0),将是我将工作的新功能的地方,至少不会在生产中几个月..

我的问题是,我应该怎么设置这个项目,从目录结构到NetBeans和TortoiseHG?什么是最好的做法是什么?

顺便说一句,我使用NetBeans IDE 7.3和TortoiseHG 2.7.1与Mercurial-2.5.2

To gi让我感觉到自己在哪里,在TortoiseHG中我已经玩了一些分支,但是我得到的结果并不是我所期望的(我没有得到我希望的两套独立文件,以便对它们进行操作独立)。我不知道我是否做错了,或者分支不是我需要的。

因此,在分支失败并且不知道该怎么做的时候,我考虑过在同一个Netbeans项目中创建多个文件夹/目录,每个版本都有一个文件夹和每个文件夹的名称(version1.0,version2.0 ,版本3.0 ...)。然后,我会将项目的整个文件结构放置在这些文件夹中的每一个文件夹中,并对更新进行手动控制,即在进行任何更改后,我会根据需要手动将文件从一个“文件夹版本”复制到另一个文件夹版本。但是在如此多的层面上这看起来很错。

根据我写的内容,你能告诉我如何正确处理这个问题吗?什么是最佳实践?或者你能否指出我在正确的方向,我可以找到解释如何到达那里的教程?

感谢, S.

+0

那么你需要的是1.x和2.x文件共存于你的文件夹中?如果你需要,你可以使用'按文件夹'模式。你有两个分支,'1.x'和'2.x'用于同一个仓库,并且它们有不同的文件集。并有两个不同的工作目录,有自己的.hg回购。然后在1.x文件夹中使用'hg up 1.x',在2.x文件夹中使用'hg up 2.x',就像两个独立的程序员一样。 –

+0

或者如果你仍然想要像hg(不是svn cvs ...)那样的DVCS,但只需要一个repo,你可以尝试bzr,它有一些叫做'standalone tree'的特性。 –

回答

1

谢谢CosLu,

你把我安排在了正确的道路,现在我明白这是如何工作...

分支是要走的路,但它并没有创建第二个项目您的NetBeans环境。相反,您可以根据需要在TortoiseHG/Mercurial中拥有尽可能多的分支机构,并且一次只能在您的NetBeans环境中显示其中一个分支机构。

在几个步骤中,这是我理解它的工作原理。

  1. 您在NetBeans中创建和TortoiseHG项目(创建可能不是最好的术语)
  2. 您对您的项目工作,并提交更改。
  3. 当你到要启动该项目的第二路径上的工作点,做到这一点:
  4. 提交所有更改到目前为止
  5. 创建一个新的分支:在NetBeans中,你可以右键点击该项目,然后是Mercurial - >分支 - >创建分支(给它起个名字)
  6. 正在为这个新分支进行更改
  7. 提交您的更改。如果你现在去TortoiseHG,你会看到一个新的分支。
  8. 如果你想有一个3支,重复步骤3至7

要从一个是当前活动的不同路径(分支)上工作,干脆去TortoiseHG,在头右击你想要工作的分支,然后选择“更新”。在确认对话框中点击确定,你就可以开始了。在您的NetBeans环境中,您的项目将反映该分支。

注意哪一个分支在那个时候处于活动状态是非常重要的,所以您不要对错误的分支进行更改。

我还不知道这个难题的唯一部分是如何提交从一个分支到另一个分支的选择性更改。例如,如果我对生产系统进行更改,并希望将其反映到我的开发系统上,而不合并它们,那么我该怎么做?但这超出了这个问题的范围...

1

这是我在使用Netbeans和Subversion类似的情况是如何工作的。可能不完全一样,但我的经验可能会有所帮助。

分支实际上应该是为了您的目的,所以我不明白你是什么意思,你没有得到不同的文件集。

即使该项目有多个版本,我创建只有1个项目的NB与1本地副本。 (每个版本没有多个文件夹或项目)。

比方说,你已经开始这个项目,并且你已经把它放在仓库的后备箱里。现在您应该创建一个新的分支来包含您想要在将来上传的更改。

在NB(也许在你的情况下,根文件夹)项目视图中的文件夹上只需点击右键并选择:

颠覆>复制>复制到

在那里,你应该能够找到分支文件夹放在共享存储库中,并选择它以制作项目的全新副本。

从现在开始,这很容易。每次你必须从你的主要项目切换到你未来的更新,你可以选择你必须工作在其上的文件的版本:

颠覆>复制>开关复制

在这里,您可以选择更新本地文件到主干或其他分支。

颠覆>复制>合并更改

此选项,最终将允许你合并不同的分支和树干在一个文件中。

非常有用的,也显示标签的可能性旁边显示的文件上的文件的版本,你工作:

svn version next to file

这显然表明我不工作的该文件的主干版本,但在称为测试的分支上。

0

如何从第二个分支创建第三个分支。并将第3分支与第1分支合并。第二个分支仍然未被装上。