{"id":19325903,"url":"https://github.com/linkorb/multi-repo","last_synced_at":"2026-02-05T05:32:07.227Z","repository":{"id":44203510,"uuid":"248435190","full_name":"linkorb/multi-repo","owner":"linkorb","description":"Command line tool which allows you to manage multiple git repositories at a time","archived":false,"fork":false,"pushed_at":"2024-11-06T15:42:58.000Z","size":202,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-21T04:48:33.091Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://engineering.linkorb.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linkorb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-03-19T07:13:00.000Z","updated_at":"2024-12-26T00:54:20.000Z","dependencies_parsed_at":"2024-01-11T23:04:52.802Z","dependency_job_id":"febf97e5-980b-483d-b3c9-d6a30f02b734","html_url":"https://github.com/linkorb/multi-repo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linkorb/multi-repo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkorb%2Fmulti-repo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkorb%2Fmulti-repo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkorb%2Fmulti-repo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkorb%2Fmulti-repo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linkorb","download_url":"https://codeload.github.com/linkorb/multi-repo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkorb%2Fmulti-repo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29113601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T05:31:32.482Z","status":"ssl_error","status_checked_at":"2026-02-05T05:31:29.075Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T02:11:50.093Z","updated_at":"2026-02-05T05:32:07.211Z","avatar_url":"https://github.com/linkorb.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Managed by https://github.com/linkorb/repo-ansible. Manual changes will be overwritten. --\u003e\nmulti-repo\n============\n\nMulti repo is a command line tool which allows you to manage multiple git repositories at a time and apply to them some specific rules (such as: add qa checks, configure CI, normalize config files, ensure vendor packages).\n\n\n\n## Installation\n\n    git clone git@github.com:linkorb/multi-repo.git\n    cd multi-repo\n    docker build . --tag linkorb-repo:0.1 --file Dockerfile\n    docker run -d --rm -t -i -v=${PWD}:/app --name linkorb-repo-php linkorb-repo:0.1\n    docker exec linkorb-repo-php composer install # install PHP dependencies\n\n## Configuration\n\nTo specify list of repositories and define rules `repos.yaml` file used. See `repos.yaml.dist` to get an idea on that config. It might look like that:\n```yaml\nparameters:\n  repos:\n    defaults: ~\n    configs:\n      myAwesomeRepo:\n        gitUrl: 'git@github.com:linkorb/your-repo-name.git'\n        variables: ~\n        fixers:\n          circleci:\n            template: \"%kernel.project_dir%/templates/.circleci/config.yml.twig\"\n          qaChecks:\n            checks:\n              - \"phpcs\"\n              - \"phpstan\"\n          githubWorkflows:\n            templates:\n              \".github/workflows/production.yml\": \"https://raw.github.com/…./production.yml.twig\"\n              \".github/workflows/staging.yml\": \"https://raw.github.com/…./staging.yml.twig\"\n```\n\n\n## Run command\nTo execute command please run `/app/bin/console linkorb:multi-repo:fix`. It's possible to run over specific repo only or apply a specific fixer. For more options take a look on: `/app/bin/console linkorb:multi-repo:fix --help`\n\n## Flow\n* Once you'll run the \"fix\" command, the tool will iterate over all repositories, do `git clone` (if needed) and `git pull` on default branch (which is master in most of the cases).\n* After the command finishes execution, you can go to repositories under `./repositories/source` directory, review, commit \u0026 push changes.\n* To have an overview of repositories which will contain any changes, please run: `/app/bin/console linkorb:multi-repo:list-uncommitted`\n* To execute a custom command for repositories, please run: `/app/bin/console linkorb:multi-repo:exec`\n* To update repositories, please run: `/app/bin/console linkorb:multi-repo:update`\n* To dump fixer config, please run: `/app/bin/console linkorb:multi-repo:config`\n\n## The repositories base path\n* By default, `repositories/` in this project's directory is used as the repository base path.\n  You can change this to a different location by specifying a custom absolute path in `MULTI_REPO_REPOSITORIES_PATH` in your `.env.local` file\n* You can also specify custom `repos.yaml` location. For that you need to specify `MULTI_REPO_CONFIG_PATH` (defaults: under root dir).\n  It must be either absolute path or relative from root dir and ends up with config file name.\n* You can have following hierarchy of metadata (priority of overriding in the same order):\n  * metadata section in mains `repos.yaml` config\n  * metadata section in `repo.yaml` config (located relative to main `repos.yaml` as `./repos/${REPOSITORY_NAME}/repo.yaml`)\n  * metadata section in `repo.yaml` config in destination repository\n* The repositories base path directory is structured in the following way:\n  * one directory per configured repository (optionally with sub-directories), which contains an actual state of each repository, changes, etc.\n  * `.multi-repo-cache` directory which is meant to be used for restoring initial data in case of exception during an execution\n\n## Miscellaneous\n* To access protected url as a template for fixer, etc. you need to define in `.env.local` following parameters:\n    * HTTP_CLIENT_AUTHORIZATION_TYPE (`token` for github access tokens)\n    * HTTP_CLIENT_AUTHORIZATION_VALUE\n\n## Contributing\n\nWe welcome contributions to make this repository even better. Whether it's fixing a bug, adding a feature, or improving documentation, your help is highly appreciated. To get started, fork this repository then clone your fork.\n\nBe sure to familiarize yourself with LinkORB's [Contribution Guidelines](/CONTRIBUTING.md) for our standards around commits, branches, and pull requests, as well as our [code of conduct](/.github/CODE_OF_CONDUCT.md) before submitting any changes.\n\nIf you are unable to implement changes you like yourself, don't hesitate to open a new issue report so that we or others may take care of it.\n## Brought to you by the LinkORB Engineering team\n\n\u003cimg src=\"http://www.linkorb.com/d/meta/tier1/images/linkorbengineering-logo.png\" width=\"200px\" /\u003e\u003cbr /\u003e\nCheck out our other projects at [linkorb.com/engineering](http://www.linkorb.com/engineering).\nBy the way, we're hiring!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinkorb%2Fmulti-repo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinkorb%2Fmulti-repo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinkorb%2Fmulti-repo/lists"}