使用GIT对Java网站进行版本控制的最佳方法是什么?

时间:2013-01-26 14:01:50

标签: git java-ee tomcat github

我在我的unix中安装了一个git repo,用于跟踪我们的Java EE网站。

我目前遇到的问题不在于使用git,而在于我想使用它的方式,如下所述。

我在一个由3位开发人员组成的团队中工作,为网站开发做出了贡献。

最初,当我在服务器中安装Git时,我直接创建了一个包含实际工作文件的webapps目录的repo,并遇到了foll问题。

1)在将更改提交到repo中时,我们中的一个人会执行git add .并将其提交到存储库,该存储库不仅会提交提交者更改的文件,还会提交其他开发人员的更改。

当我们遇到这个问题时,我们决定我们需要在不同目录中的同一服务器中为我们每个人创建单独的非裸存储库,这将包含整个代码。我们遵循的基本工作结构如下所示:

enter image description here

如上图所示,我们创建了一个裸仓库,其中包含由webapps推送的网站内容,图片中的网站内容是工作目录。

这里的基本工作流程是:

1)为每个开发者创建n个非裸存储库。

2)从裸露的回购中获取整个网站的工作文件

3)在对我们自己的仓库进行更改之后推送到裸仓库

4)使用post-receive hook配置的裸存储库实际上会更新工作目录。

此设置工作正常,但我们面临很多问题,如下所示:

1)每个开发人员在一个单独的目录中拥有自己的竞争对手,无法在将代码推送到裸仓库之前测试代码,这将更新Work Directory-Coz这些步骤,即使是一个jsp文件更改我最终做了20次提交,直到它开始正常工作而没有错误,因为我们有tomcat只指向原始的工作目录。

这已成为这里最麻烦的问题。

此策略解决了以前存在的冲突问题,但在测试代码方面甚至产生了更大的问题。

我们如何改善在项目中使用GIT似乎有益的情况。

任何人都可以提出任何改进方法。

1 个答案:

答案 0 :(得分:1)

这样的策略可能有用吗?我之前在一个小团队中使用了类似的策略,它对我们来说效果很好:

  • 每个开发人员在进行任何更改之前都会创建一个分支
  • 开发人员做了一些工作并提交给他们的分支
  • 如果可能,开发人员会针对自己的目录运行tomcat(或jetty,或其他)进行测试。 Maven让这很容易。
  • 在推送之前,开发人员将其分支机构与主
  • 相关联
  • 开发人员将他们的分支推向裸仓库
  • 然后您(或负责最终批准的人)将分支合并为主分支。如果开发人员正确地进行rebase,那么这应该是一个简单的快进合并。

更新了一些关于每个开发人员如何运行webapp的想法:

我可以通过几种方法来完成上面的第3个要点:

  • 使用tomcat的单个安装。创建多个上下文,每个开发人员一个。

    例如,对于developer1,在tomcat_home / conf / catalina / localhost下创建一个名为dev1.xml的上下文文件,类似于:

    ?xml version =“1.0”encoding =“UTF-8”?> Context path =“/ dev1”docBase =“/ home / developer1 / wars / your-webapp-1.0.war”unpackWAR =“false”/>

    (注意我删除了第一个'<'所以xml会出现在帖子中)

  • 使用jetty使用命令行运行战争,例如:

    java -jar jetty-runner.jar your-webapp-1.0.war

  • 使用ant或maven等构建工具提供的机制来运行和测试webapp。例如,在maven中,您可以使用jetty-plugin使用mvn jetty:run运行webapp,或者甚至将其配置为启动Web服务器并在每次构建项目时运行测试。