1

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

我目前遇到的问题不是 git 的使用,而是我想使用它的方式,这将在下面解释。

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

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

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

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

在此处输入图像描述

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

这里的基本工作流程是:

1)为每个开发人员创建 n 个非裸仓库。

2)从该裸仓库中获取整个网站的工作文件

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

4) 使用 post-receive 钩子配置的裸仓库实际上会更新工作目录。

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

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

这成了这里最头疼的问题。

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

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

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

4

1 回答 1

1

也许这样的策略可能会奏效?我之前在一个小团队中使用过类似的策略,它对我们很有效:

  • 每个开发人员在进行任何更改之前都会创建一个分支。
  • 开发人员做了一些工作并提交到他们的分支
  • 如果可能,开发人员针对他们自己的目录运行 tomcat(或 jetty 或其他)进行测试。Maven 使这非常容易。
  • 在推送之前,开发人员将他们的分支重新定位到 master
  • 开发人员将他们的分支推送到裸仓库
  • 然后你(或负责最终批准的人)将分支合并到 master。如果开发人员正确地变基,这应该是一个简单的快进合并。

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

我可以想到几种方法来完成上面的第三个要点:

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

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

    ?xml version="1.0" encoding="UTF-8"?> 上下文路径="/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 运行 webapp mvn jetty:run,甚至可以将其配置为在每次构建项目时启动 web 服务器并运行测试。

于 2013-01-26T14:13:02.450 回答