![]() There you can see that all components in the src/Symfony/Component/ folder are standalone packages with their own license, readme, composer.json files, etc. For example, Symfony framework, along with all of its components, are part of one monorepo. Facebook, Google, SensioLabs) use the monorepo approach for maintaining their packages. That means even when you develop a feature spanning across multiple packages, you commit changes to the single repository.Ī lot of big companies (eg. Monorepo is a single Git repository that can contain multiple more or less independent packages. Instead we decided to do more research and came up with two ways for possible improvement - either using a monolithic repository (also known as monorepo) for all our packages, or using Git submodules for the same purpose. We came to an agreement that maintaining a bigger amount of repositories would be very difficult at the time, and would only be inefficient. These often didn’t make sense because you were seeing them as independent from global changes that had been made in the other repositories. The code review process was difficult as well because the reviewer had to check modifications across multiple repositories. ![]() We felt that this was probably not the smoothest workflow. That was just one plugin modification, but the same process had be applied to all the other feed plugins (Zbozi product feed, Google product feed, …). In all packages, update dependencies in composer.json from dev-* to the new releases.Merge the Git branch with demo data in the Heureka product feed (in its own repository) and release a new version.Merge the Git branch with the new Plugin interface (in its own repository) and release a new version.Do a code review, make sure everything works and is designed properly.In the Shopsys Framework core (also in a separate repository, of course), update the dependencies on the Plugin interface and on the Heureka product feed as well, and implement the logic of loading demo data.implement the interface for loading demo data. In the Heureka product feed (stored in another separate repository), update the composer.json dependency on the Plugin interface to the dev-* version - note: we didn’t want to release a new version of the Plugin interface until it was validated to be useful in the implementation.add new interface responsible for loading demonstrational data (see the commit). Modify a Plugin interface (stored in a separate repository), ie.The general workflow looked something like this: All the changes had to be done in separate Git branches first, and then later merged and released after a code review. Now it became much more difficult to develop certain features which spanned more than one repository.įor example, when we were developing a new feature (adding demo data) in a Heureka product feed, there were many steps to go through. ![]() Suddenly, there were several packages on our Github that needed to be managed somehow. Problems with maintaining more than one repository If you are interested, you can read our article about components and plugins. We separated components for HTTP smoke testing, tools for automatic coding standards corrections, and created several plugins for product XML feeds. ![]() This approach is commonly called manyrepos. When we got around to creating the framework and started to decouple parts of the original platform into new standalone packages we decided to create new Git repositories for each of the packages. In the initial stages of the development of Shopsys Framework all source codes were stored in one single Git repository as the project was originally planned to be a monolithic platform. This article describes our problem with multiple Git repositories and presents a possible solution that we decided to adopt. While developing Shopsys Framework, we created a few new repositories for individual components of the framework and soon realized there had to be a better way for handling so many projects. Maintaining projects across multiple Git repositories can become quite troublesome. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |