从集中式工作流转移到分布式工作流

时间:2017-04-03 19:48:05

标签: git web version-control

这是我们目前在团队中工作的基本方式(4人开发)。我给他们施加压力要改变它,但我需要一个计划,我需要说服他们。我们目前的工作流程:

Primal way

这就是我认为我们应该完成的事情:

Decent way

如您所见,目前有一个GIT回购:它位于我们的开发服务器中。但是我们都直接使用它,因为它作为网络驱动器安装,我们IDE中的项目基于它。

经过测试,我们承诺,并使用FTP将这些提交的文件上传到生产服务器。我们从不使用git push,而且只有一个分支(master)。在同一个仓库中为多个用户提供更多工作方式毫无用处。

我知道这是一种非常原始的方法。 GIT只是为我们服务的历史。它显然正在变成一场噩梦,嘿嘿,不要碰这个,现在就谈谈这个问题"等等。

所以我的主要问题是,我们应该采取哪些步骤来实现第二个图表(或者您建议的其他任何内容)?需要注意的一点是,我们不断的日常工作流程是接收门票/订单,更改和部署。

我的第一个想法是在每台本地机器上克隆开发回购。可能出现的问题:

  • 开发回购目前有一个工作树(我们所有人正在进行的工作)。

  • 由于我们致力于Web开发,我们需要不断测试每一个小变化。因此,我们最终需要不断推送到开发服务器来测试任何更改,看看它是如何工作的(我认为唯一的解决方案是在每台本地计算机上使用Vagrant和虚拟机)。

    < / LI>

我们的开发服务器回购中应该更改什么? 我们应该如何在生产服务器中设置repo,并将其链接到开发服务器?

最后,考虑到我解释过的工作流程,关于分支机构的最佳方法是什么?

我已经读过,最好总是在生产服务器中签出生产/构建分支,并且当开发服务器中的开发分支上的测试被批准时,将其合并到production / buld一,然后从生产服务器拉。

1 个答案:

答案 0 :(得分:1)

要将diagram1工作流转换为diagram2,您可以按照以下步骤操作:

1.将开发服务器更改为远程仓库(远程仓库是裸机,没有工作目录)

# In a different directory
mkdir develop
cd develop
git init --bare
# In the development server folder
git remote add origin \path\for\the\develop\you\just\created
git push origin --all
# Now the new create folder develop is the really development server repo (below steps mean the new one).

2.如果生产服务器现在不是裸露的,请将生产服务器更改为步骤1的裸仓库。

3.改变本地仓库和开发服务器仓库之间的路径。

# In separate local repo
git clone /path/of/development/server
git pull 
git commit
git push

4.改变从开发服务器向生产服务器提供更改的方式

# In development server
git remote add pro /path/for/production/server
git push pro --all

或者您可以使用收件后挂钩自动更新生产服务器。

对于本地仓库,它只与远程仓库(开发服务器)相关。由于您的代码基于Web,因此您可以将git repo克隆到虚拟机,流浪者或网络驱动器作为本地存储库。

  

我们的开发服务器回购中应该更改什么?我们该怎么办?   在生产服务器中设置repo,并将其链接到   发展一个?

与第1步一样,重要的是将开发服务器作为裸仓库。此外,您应该将生产服务器更改为裸仓库。要链接开发,可以在开发服务器中添加远程,然后将更改推送到生产服务器。或者使用post-receive hook,当本地repo完成推送到开发回购时,这将自动更新生产。

是否在主分支或新创建的分支上工作。有一些情况可以在新的分支上工作:

  • 在应用主分支上的更改之前,需要批准开发人员的更改
  • 开发新功能/修复错误需要在申请主分支之前通过其他角色(例如QA)进行测试

总之,如果所有开发人员都可以直接在master分支上进行更改,则只能使用master分支。否则,开发人员可以为自己提交/推送更改,然后审批者将这些更改合并到主分支。

对于生产服务器,如果开发和生产服务器不总是同步,原因你可以有一个生产分支来处理developmetn服务器的合并/拉动。

a successful branch modle有不同的分支供您参考。

相关问题