管理自托管回购和测试的分支
Managing Branches For Self Hosted Repo and Testing
我意识到这听起来不太清楚,但我自己仍然感到困惑。我正在阅读 Git 电子书,但不能 100% 确定我已经完全理解它。如果大家觉得有遗漏的信息,请告诉我,我会补充。
从前一周开始,我们现在已经设置了一个自托管 git 存储库和服务器。这个 repo 是 master 并且是当前在暂存环境中的内容。从这里开始,我们准备好后手动重新部署到生产环境。
现在(以及一直以来的情况),要进行更改,某人只需访问该文件并在其所在的服务器上进行所需的更改。已经有多个用户保存彼此的工作并且丢失了很多东西的实例。
我们想要做的:从这个 master 创建分支,让人们在上面编写代码,但如果分支可以本地存储在用户机器上,而不是存储在 master repo 所在的测试服务器上,那将是理想的。
测试代码:应该怎么做?是不是要把本地分支的修改后的文件推送到master那里试试?它实际上只是在服务器上创建多个分支,但在本地切换到这些分支吗?
代码不能独立于其他任何东西进行测试,因此无论如何都需要将其添加到 master/deployed 版本。
我的任务是为我们的环境设置 git,所以我希望尽可能轻松和直接。
Git 和版本控制一开始设置起来真的很混乱,所以我会尝试单独回答您问题中的具体要点:
"[..] to make changes, someone just access' the file and makes the needed changes on the server [...]"
您肯定希望停止将文件直接写入生产服务器上的磁盘。理想情况下,您要做的是通过像 Jenkins or TeamCity.
这样的持续集成服务器自动处理部署
"[...] if the branches could be stored locally on user machines, not on test server where master repo is [...]"
这就是 Git 和版本控制的重点。您可以将文件托管在 Git 存储库中,并让每个开发人员 克隆 存储库的本地副本 (git clone
)。这允许他们处理自己独立的代码副本,同时偶尔 pull
从 origin
获取最新更改。当代码完成时,他们会 push
将他们的更改返回 origin
。
"What we are looking to do: Create branches from this master to let people write code on".
这里你问的是Git Flow。您应该创建一个名为 master
的 single 分支 develop
,并在 feature
中创建 each 分支develop
的分支。完成单个功能后,应将其合并回 develop
。
应该连接 develop
分支(最好通过 CI)以部署到您的开发和测试环境中。只要有更改,您就需要将 develop
部署到开发服务器。
"For testing code: What would be the way to do it?"
"Code cannot be tested independently of anything else, so it will need to be added to master/deployed version in any case."
您想在 develop
上进行测试。当候选发布版中的所有功能(您最终希望部署到生产环境中的一组更改)都已完成时,您需要将 develop
分支部署到测试环境中。在这里你可以测试这个版本的develop
,而其他开发者可以自由地将develop
的更高版本推送到开发环境——测试环境不会得到更新。
对测试环境的测试满意后——当你想将代码部署到生产环境时,你可以最后合并develop
回master
(如果您正在处理适当的发布计划,最好使用 release
分支)。 master
然后连接到您的生产环境。
按照 Git 流程,您只会在代码经过彻底测试后将其部署到 master
,因此未经测试的代码永远不会投入生产。
我意识到这听起来不太清楚,但我自己仍然感到困惑。我正在阅读 Git 电子书,但不能 100% 确定我已经完全理解它。如果大家觉得有遗漏的信息,请告诉我,我会补充。
从前一周开始,我们现在已经设置了一个自托管 git 存储库和服务器。这个 repo 是 master 并且是当前在暂存环境中的内容。从这里开始,我们准备好后手动重新部署到生产环境。
现在(以及一直以来的情况),要进行更改,某人只需访问该文件并在其所在的服务器上进行所需的更改。已经有多个用户保存彼此的工作并且丢失了很多东西的实例。
我们想要做的:从这个 master 创建分支,让人们在上面编写代码,但如果分支可以本地存储在用户机器上,而不是存储在 master repo 所在的测试服务器上,那将是理想的。
测试代码:应该怎么做?是不是要把本地分支的修改后的文件推送到master那里试试?它实际上只是在服务器上创建多个分支,但在本地切换到这些分支吗?
代码不能独立于其他任何东西进行测试,因此无论如何都需要将其添加到 master/deployed 版本。
我的任务是为我们的环境设置 git,所以我希望尽可能轻松和直接。
Git 和版本控制一开始设置起来真的很混乱,所以我会尝试单独回答您问题中的具体要点:
"[..] to make changes, someone just access' the file and makes the needed changes on the server [...]"
您肯定希望停止将文件直接写入生产服务器上的磁盘。理想情况下,您要做的是通过像 Jenkins or TeamCity.
这样的持续集成服务器自动处理部署"[...] if the branches could be stored locally on user machines, not on test server where master repo is [...]"
这就是 Git 和版本控制的重点。您可以将文件托管在 Git 存储库中,并让每个开发人员 克隆 存储库的本地副本 (git clone
)。这允许他们处理自己独立的代码副本,同时偶尔 pull
从 origin
获取最新更改。当代码完成时,他们会 push
将他们的更改返回 origin
。
"What we are looking to do: Create branches from this master to let people write code on".
这里你问的是Git Flow。您应该创建一个名为 master
的 single 分支 develop
,并在 feature
中创建 each 分支develop
的分支。完成单个功能后,应将其合并回 develop
。
应该连接 develop
分支(最好通过 CI)以部署到您的开发和测试环境中。只要有更改,您就需要将 develop
部署到开发服务器。
"For testing code: What would be the way to do it?"
"Code cannot be tested independently of anything else, so it will need to be added to master/deployed version in any case."
您想在 develop
上进行测试。当候选发布版中的所有功能(您最终希望部署到生产环境中的一组更改)都已完成时,您需要将 develop
分支部署到测试环境中。在这里你可以测试这个版本的develop
,而其他开发者可以自由地将develop
的更高版本推送到开发环境——测试环境不会得到更新。
对测试环境的测试满意后——当你想将代码部署到生产环境时,你可以最后合并develop
回master
(如果您正在处理适当的发布计划,最好使用 release
分支)。 master
然后连接到您的生产环境。
按照 Git 流程,您只会在代码经过彻底测试后将其部署到 master
,因此未经测试的代码永远不会投入生产。