我是Git的新手,并试图将我的网站从SVN转移到GIT进行版本控制和部署。
我有很多开发人员将使用他们的本地机器,我有3台服务器,'开发','分期'和'生产'。
我一直在看书和观看Git如何工作的视频所以我认为我现在非常熟悉它,如添加,提交等,但我需要有关工作流和部署的建议。
我需要知道的第一件事是初始化GIT存储库。它是否需要在'生产'服务器上,然后我在'staging'和'development'上克隆它,每个开发人员还将它克隆到本地机器上?
其次,每个服务器应该拥有自己的分支吗?即'开发'将有一个'开发'分支,'staging'将有一个'staging'分支,'production'将有一个'production'分支?
由于
答案 0 :(得分:6)
我最近也将我的团队从SVN移到了Git,我们拥有相同的3台服务器设置,prod,stg和dev ..
对于迁移过程,首先是sudo apt-get install git-svn
,然后是..
$ git svn clone [subversion_repository_url] /path/to/git/repository
$ cd /path/to/git/repository
$ git remote add origin [gir_repo_url]
$ git push origin master
适用于工作流程,
标题为“ 成功的Git分支模型 ”的This link非常有用。它需要如何为团队使用'生产 - 登台 - 开发'类型的工作流程。
关于部署:
在每台服务器上,我们所做的是, 每个服务器在文件系统上都有一个git repo。 要进行部署,我将需要部署的相应分支存档并将其解压缩到/ srv / www /文件夹中。
例如, on Prod ,部署主分支,
sudo git archive --format zip --output output.zip master -0
^'master'表示您想要压缩的分支。这不包括.git文件夹。
然后在/ srv / www /文件夹中解压缩sudo unzip output.zip -d /srv/www/app/
This is the equivalent of an svn export
command.
对于临时服务器,我们通常会检出其中一个发布分支或 Dev分支 ..
对于开发服务器,我们会检查我们需要执行测试的功能分支。
答案 1 :(得分:2)
这里有3个问题:如何部署,如何构建分支,以及如何构建/托管存储库。
如何构建分支?
你可以从简单开始。你已经有了一个SVN存储库,所以如果你有一个trunk和分支,你可以在git中以相同的方式设置它们。如果这对您不起作用,请仅在您找到需要时进行更改。
如果您想要更高级的内容,请查看git flow。另一个好的工作流程是one that github uses。它的设计比git flow更简单。
如何托管存储库?
一种简单的方法就是像使用SVN一样。在中央服务器上有一个中央存储库。每个人都推进和拉出中央服务器。另一个选择是给某些首席开发人员提供“官方”存储库,其中该主管将在他们满足领导批准的情况下从贡献开发人员那里获取其他更改。有很多方法可以做到这一点。你只需要决定什么最适合你。
如何部署?
同样,这也不需要改变您的SVN工作流程。你可能正在从每个方框中做svn update
。我只对每个方框做git pull
,并保持其他所有内容。
答案 2 :(得分:1)
很多确实取决于最终适合你的。
another answer here中链接的分支模型是一个非常好的起点。
通常,您将拥有一个代表已发布代码的master
分支。
分段取决于您想要分阶段的内容 - 我们的团队有一个名为staging
的独立分支,由持续集成服务器的分段构建使用。可以将不同的功能合并到此分支中,以便在暂存时对其进行测试。
部署将取决于您是使用CI还是直接从repo中的分支部署。
答案 3 :(得分:0)
我制定了自己的策略。它最初是基于nvie的:
http://dymitruk.com/blog/2012/02/05/branch-per-feature/
它允许特定混合和匹配已完成的功能。此策略的基础是每次迭代从历史记录中的相同位置开始每个功能。