2016-08-24 117 views
0

我是一家大型公司内的小型PHP开发团队的成员。我们有自己的开发和生产服务器,由于它们都在本地网络上,我们开发的应用程序严格在本地运行,并且不打算公开,所以我们在开发服务器上开发并且没有本地环境。我们每个人都有本地存储在磁盘上的源代码,但我们设置了IDE,以便立即自动将所有更改同步到DEV服务器(基本上每次保存后)。网络驱动器上的开发权

由于每个开发人员都有自己的项目,所以在历史上这是非常有益的,并且更多开发人员在一个项目上的协作几乎从未发生过。但现在我们的团队正在变得越来越大,我们正在处理一些变化。最主要的是我们需要有某种版本控制系统。 Git更准确。

有什么办法可以实现某种类型的git工作流到这个设置?我的意思是,安装Git非常简单,但我们希望享受例如将git集成到IDE中,并能够看到谁做了什么,什么时候做什么等。现在我们能够在不改变工作流程的情况下完成所有工作,就是在DEV服务器上安装git并直接提交。但这意味着每个人都会在本地处理代码,代码将与服务器同步,他需要连接并在那里执行。这似乎只是我错了..

你可以看到一种方法来实现git,而不必在我们的机器上设置本地环境?

+0

“我们在开发服务器上开发,没有本地主机环境,我们每个人都有本地存储在磁盘上的源代码”。那么,每个开发人员都有自己的机器?如果是的话,那么简单地将每个本地副本作为git存储库。 –

+0

是的,我们都有我们的owm机器。问题是,由于我们没有localhost,因此查看和测试代码的唯一方法是在DEV服务器上。这就是为什么所有本地更改都自动上传到那里的原因。如果我们想保持这个工作,它会与git存储库冲突,因为我们会将更改提交到本地副本,但也会将其上传到服务器。这肯定会在每次推送到DEV服务器上的存储库时引发冲突.. –

回答

0

让每位开发人员在其本地git存储库上工作,并与中央存储库同步。

当开发人员认为他的更改已准备就绪时,他可以简单地推他的提交。

  • 要么推,快速前进,那么一切都很好,变化会自动应用。
  • 或者,推动是非快速前进。当其他开发人员介入并发生冲突时就是这种情况。所以,开发人员必须拉动其他更改并合并他的提交,可能会解决冲突。

    Git既没有引入冲突,也没有规避冲突(尽管一些人认为这是冲突)。 Git只是帮助你注意到管理这些冲突。 你到现在为止是如何处理冲突的?例如,两个开发人员在同一个文件中更改一行?避免冲突与你的团队的组织有关。

您也可以建立一个post-receive hook从而使中央存储库自动更新,每当新的提交已被推Web服务器的文件(虽然第一次运行自动化测试显然是更明智地)。

编辑

你的发展战略是,恕我直言,也不适合甚至是中等规模的团队也不中型软件项目。

  • 团队规模越大,同时在代码上工作的人越多。如果两个开发人员更改同一个文件会怎样如果Dev1保存他的工作,Dev2的工作是否会因为他没有保存他的文件而被覆盖?如果Dev2保存他的文件,他会覆盖Dev1的工作吗?

  • 软件项目越大,您需要并行更改多个文件的可能性就越大(例如更改函数的签名)。因此,如果您更改第一个文件,现在完整的软件被破坏,并且您自动将此损坏的软件部署到您的服务器!

+0

感谢您的回应!我完全同意,现在我们做事情的方式并不好。到目前为止,我们的IDE本身正在检查冲突。每个程序员都被警告,第二次他打开了一个服务器上有更新版本的文件。所以基本上我们通过git来处理冲突,但是在一个非常基础的层面上(如果文件在服务器上更新,只需下载它,或者将它合并到本地版本)。 –

+0

所以,如果我正确理解你的答案,我们应该基本上关闭自动上传到DEV,并通过提交/推入git。为此,我们需要有一个工作的本地主机,因为如果我们只有在DEV上运行的应用程序,我们会在黑暗中工作,我们需要承诺并推动DEV的每一个改变,以便看到它在实际中 - 这将很容易中断应用程序。我对吗? –

+0

我会说,你应该*用(手动)提交/推送替换*自动上传。基本上,对于每一个变化,你都可以创建一个提交并推送它,所以基本上有基本的工作流程。然而,作为一名开发人员,我首先总是希望确保我的更改在任何地方上传之前不会破坏任何内容。所以当地的测试环境 - 如果可行的话 - 总是一件好事。但你不需要它。 - 无论如何,目前你也在黑暗中工作,可能会破坏事物 - 只是周期比git可能短得多。 –