2015-09-07 36 views
1

我需要的情况下,像这样的最好的git安装做法:如何使用git设置测试环境?

enter image description here

我目前工作的一个Laravel项目,现在让我们把它叫做core的,它有两种实现方式(称为project_1project_2)。这两种实现共享相同的core。差异是模型,控制器,请求,路线等

首次尝试

我设置3个文件夹,一个叫core,一个叫project_1,一个叫project_2core只有在两个项目中共享的通用文件。没有模型,控制器在core。每次我对核心进行更改时,都可以轻松推送到任一项目。然而,问题是,由于core没有任何模型,控制器...,我不能做任何测试。

第二次尝试

所以后来,我创建了一个test项目从core,高配车型,从控制器复制project_2。然后在.git/info/exclude,然后git rm --cached file中分别添加这些文件。但问题是,当推或拉,这些文件也删除project_2 ...

我想达成什么

我想一个设置,我可以轻松地在test扭曲和测试代码项目,然后只在coreproject_1project_2之间推码。

+0

我认为如果1和2从内核中引出新的更改会更有意义。但这是我猜想的首选问题。 –

+0

@TimCastelijns这就是我在第一次尝试时所做的。问题是我不能做测试。由于它是一个裸机,没有支持实际项目中的文件。 – bing

回答

0

您需要使用分支机构。

分支包含从存储库基本分支中的特定点开始的单独更改历史记录;称为主人

检出分支;会将您的目录切换为仅在该分支中被跟踪的文件。

有许多不同的分支策略,你可以在网上找到。例如,this article by atlassian描述了功能分支工作流程。

在你的情况,你应该尝试一些简单:

  1. 创建你的资料库。
  2. 仅添加那些对所有环境都通用的文件。我认为这是“核心”;并提交您的更改。
  3. 创建项目1的一个分支,与git checkout -b project_1
  4. 你会从这里
  5. 工作正常添加核心拥有的所有文件,所有文件创建/添加/编辑将只在PROJECT_1分支跟踪和不会影响“核心”(或主分支)。

如果你想创建一个测试环境,测试出任何项目1做:

  1. 创建一个名为test_project_1新的分支,从主分支。
  2. 合并到project_1分支中;与git merge project_1
  3. 做你的测试。
  4. 如果您发现错误;切换回project_1; git checkout project_1
  5. 为该错误修复创建一个新分支,例如git checkout -b project_1_bugfix_1
  6. 修正错误,一旦完成;您可以检查它并在测试分支上进行测试(git checkout test_project_1; git merge test_project_1_bugfix_1)。
  7. 确认错误已修复后,您应该将更改合并回主分支project_1;与git checkout -b project_1; git merge project_1_bugfix_1
  8. 现在,如果你想,你可以删除bugfix分支;与git branch -d project_1_bugfix_1

每次切换分支;文件系统将只反映在该分支中被跟踪的文件(当然,任何未被跟踪的文件将保持原样)。


,如果我在test_project_1转移找到核心的一个错误,而?我应该如何修复它 ?我应该在test_project_1分支中修复它吗?

  1. 切换到核心(您的主分支)。
  2. 创建一个分支来实现bug修复。
  3. 修复此问题。
  4. 测试它(与测试任何其他分支的方式相同)。
  5. 将错误修复分支合并回主服务器。
  6. 切换到test_project_1
  7. Rebase from master。
+0

如果我在test_project_1分支中发现核心错误,该怎么办?我应该如何解决它?我应该在test_project_1分支中修复它吗?如果是这样,我该如何将修复合并回核心分支,然后推送到project_2分支?或者我应该回到核心分支并修复它?在那种情况下,我如何在尝试修复时进行测试? – bing

+0

因此,根据您的建议,在修复了bug_fix_core分支中的某些内容后,我无法立即在该分支中对其进行测试。相反,我必须将该修补程序合并到test_core分支,然后我可以执行一些测试。理想情况下,我宁愿修复测试分支中的错误,并且如果可能的话,将其合并回bug_fix分支。它会更方便。但是有没有办法呢? – bing

+0

通常情况下 - 一旦您在分支中进行修复 - 您首先[a]测试修复本身是否没有任何错误[b]测试修复是否没有破坏其他任何内容。然后,一旦完成了这一步,您就会考虑修复这个错误,您现在可以将修补程序实施到核心中 - 因此,下次有人从核心中分支出去时,他们就会修复这个问题;记住一切都基于核心/主人。 **这些都是我的建议,你可以自由地做到这一点,但你看到最适合你的场景**。 –