简体   繁体   English

Git存储库结构和工作流程

[英]Git repository structure and workflow

How best to structure our Git and workflow? 如何最好地构建我们的Git和工作流程? I am pretty new to managing Git in a multi user environment and come from a Perforce background so I was wondering if anybody can help 我是在Perforce背景下管理多用户环境中的Git的新手,所以我想知道是否有人可以提供帮助

33k+ database objects spead across approx 1000 distinct functional areas. 在大约1000个不同的功能区域中可容纳33k +个数据库对象。

300 users working at the same time on 17 projects. 300个用户同时从事17个项目。

Each project has its own development cycle using a mix of waterfall and scrum\\agile. 每个项目都有自己的开发周期,结合了瀑布式和Scrum \\ agile。

Typicaly a project touches 6 to 10 functional areas though some of these areas are updated almost all the time 通常,一个项目涉及6到10个功能区域,尽管其中一些区域几乎一直都在更新

Want to move to a fortnighly release into production and become more agile 想要转移到生产中并变得更加敏捷

We want to track versions at a low level so as to help the RM's track changes and to identify and communicate changes in dataflow and areas of responsibility 我们希望以较低的级别跟踪版本,以帮助RM跟踪更改并识别和传达数据流和职责范围中的更改

Projects work with local database systems but for regression and performance testing they use 2 shared environments that must be treated the same as production 项目使用本地数据库系统,但是为了进行回归和性能测试,它们使用2个共享环境,这些环境必须与生产环境相同

We want to introduce continuous build and continuous regression testing 我们要介绍连续构建和连续回归测试

I propose to introduce a seperate repository for each functional area 我建议为每个功能区域引入一个单独的存储库

I propose to use Gitflow Workflow 我建议使用Gitflow工作流程

I propose to modify the Gitflow scripts to make managing features across multiple repositories part of its behaviour 我建议修改Gitflow脚本,使其跨多个存储库管理功能成为其行为的一部分。

I have read a lot about submodules and subtrees but dont really think either of these are suitable as we do everything in multiple branches. 我已经阅读了很多有关子模块和子树的信息,但实际上并不认为这两个都适合,因为我们可以在多个分支中进行所有操作。

Any sugestions or pointers would be much appreciated 任何建议或指示将不胜感激

We use this workflow on our projects, with some difference: 我们在项目中使用此工作流程 ,但有所不同:

  • I prefer rebasing rather than merging when putting a branch in develop , because with squash we can have a single commit per issue, giving a more clear and linear history. 我更喜欢在develop放一个分支时重新合并,而不是合并,因为使用squash可以使每个问题提交一次提交,从而提供更清晰和线性的历史记录。
  • We use when needed some pre-push hooks in order to perform unit test before pushing our work into remote, in order to avoid that other developer will have problems with our code. 我们在需要时使用一些预推钩子,以便在将我们的工作推向远程之前执行单元测试,以避免其他开发人员在我们的代码上遇到问题。

Also in your case I would prefer submodule over subtree, because subtree set in a repository all source code of sub-repository, while submodule take it apart. 同样在您的情况下,我更喜欢子模块而不是子树,因为子树在存储库中设置了子存储库的所有源代码,而子模块将其分解。

I'd create all repositories that you need. 我将创建您需要的所有存储库。 Developer should develop on a repository at time, and there must be some supervisor that integrates single repository in bigger ones, managing and handling issues. 开发人员应及时在存储库上进行开发,并且必须有一些主管将单个存储库集成到较大的存储库中,以管理和处理问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM