{
  "id": 9693671,
  "title": "Growing Pains with Five Repositories: Gitlinks and Dual CI",
  "url": "https://urgent.news/2026/09/25/growing-pains-with-five-repositories-gitlinks-and-dual-ci",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-25T04:02:27.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/flude_team/growing-pains-with-five-repositories-gitlinks-and-dual-ci-383k"
  },
  "original_language": "en",
  "account": "The project began with the decision to create a scattered architecture of independent repositories from the very first moment. This choice aimed to provide code cleanliness, CI isolation, independent histories, and separation of access rights. Git Submodules formed the foundation of the system from day one, with a Gitlink trap lurking beneath the surface. When editing code within the submodule folder, the workflow required two pushes: one from the submodule itself and another to update the pointer (gitlink) at the root of the parent repository. This discipline was easy to forget, leading to issues when the local commits were never pushed to the developer's laptop. Simultaneously, the engine repository had two personalities: a standalone repository and a submodule inside Pipeline. The clash between these two personalities resulted in missing dependencies during standalone checks and hard AssertionError errors when tests attempted to find parent artifacts. To address these issues, a marker hack was introduced, with tests checking for the presence of a .workspace_config directory at the ascended level. If the directory exists, it signifies a nested context, and tests proceed. Otherwise, tests are skipped using pytest.mark.skipif, preventing failures and maintaining a clean status.",
  "summary": "Usually, infrastructure stories start with the words: \"Our project got too big, and we decided to split it into parts.\" But with us, everything was different. From the very first minute of the project, we consciously chose an architecture consisting of a scatter of independent repositories. The Pipeline , engine , design-docs , and user-docs projects were created almost simultaneously, and the…",
  "key_points": [
    "Project adopted scattered architecture of independent repositories",
    "Git Submodules and Gitlink trap caused workflow issues",
    "Marker hack implemented to resolve dependency and test failures"
  ],
  "editors_take": "The scattered architecture of independent repositories has introduced complexities that necessitate workarounds, such as the marker hack, to reconcile the dual roles of certain repositories and prevent test failures.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}