{"id":50501601,"url":"https://github.com/aiyogg/multi-repo-manager","last_synced_at":"2026-06-02T12:02:45.636Z","repository":{"id":354806741,"uuid":"1225216625","full_name":"aiyogg/multi-repo-manager","owner":"aiyogg","description":"🍴 A lightweight VSCode extension for managing multiple repositories in a single workspace.","archived":false,"fork":false,"pushed_at":"2026-06-01T09:36:33.000Z","size":214,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T11:24:06.823Z","etag":null,"topics":["git-manager","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=Chuck-Studio.multi-repo-manager","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aiyogg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-30T04:06:41.000Z","updated_at":"2026-06-01T09:35:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aiyogg/multi-repo-manager","commit_stats":null,"previous_names":["aiyogg/multi-repo-manager"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aiyogg/multi-repo-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiyogg%2Fmulti-repo-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiyogg%2Fmulti-repo-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiyogg%2Fmulti-repo-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiyogg%2Fmulti-repo-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aiyogg","download_url":"https://codeload.github.com/aiyogg/multi-repo-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiyogg%2Fmulti-repo-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33820643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["git-manager","vscode-extension"],"created_at":"2026-06-02T12:02:44.870Z","updated_at":"2026-06-02T12:02:45.630Z","avatar_url":"https://github.com/aiyogg.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/aiyogg/multi-repo-manager/raw/main/icon.png\" alt=\"Multi-Repo Manager Logo\" width=\"200\" /\u003e\u003c/p\u003e\n\n# Multi-Repo Manager\n\n\u003e Manage multiple Git repositories in VSCode with one-click batch operations — pull, push, commit, branch switch, and fetch across all repos simultaneously.\n\n## Why This Extension?\n\nIf you work with a **multi-repo workspace** — like a monorepo split across several packages, or multiple microservices — you know the pain:\n\n- Switching branches means running `git checkout` in 5 different folders\n- Each `git pull` is its own terminal tab\n- Committing changes across repos is repetitive and error-prone\n\n**Multi-Repo Manager** solves that. Open a multi-root workspace in VSCode, and it automatically detects every Git repo inside. Then batch-operate on all of them with a single command.\n\n## Features\n\n### 🎯 Core Operations\n\n| Feature | What it does |\n|---------|-------------|\n| **Switch Branch** | Select a branch — ALL repos check it out at once |\n| **Batch Commit** | Type one message — applied to every repo with uncommitted changes |\n| **Pull All** | `git pull` across every repo simultaneously |\n| **Push All** | `git push` across every repo (with confirmation dialog) |\n| **Fetch All** | `git fetch --all` to update remote refs without merging |\n\n### 📊 Visibility\n\n- **Status bar** shows `Repos: N` with change count at a glance\n- **Sidebar view** lists each repo, its current branch, and clean/dirty state\n- **Output channel** (`View → Output → Multi-Repo Manager`) logs every git command as it runs — no black box\n\n### 🔧 Smart Detection\n\n- Auto-detects Git repos in multi-root workspaces\n- Supports nested repos inside parent folders\n- Re-scans automatically when workspace folders change\n\n## Requirements\n\n- **VSCode 1.85.0** or higher\n- Git must be installed and accessible from PATH\n\n## Installation\n\n### Option 1 — VSCode Marketplace *(coming soon)*\n\nSearch for **\"Multi-Repo Manager\"** in the Extensions panel and install.\n\n### Option 2 — Manual Install\n\nDownload the `.vsix` file from the [Releases](https://github.com/aiyogg/multi-repo-manager/releases) page, then:\n\n1. In VSCode, press `Ctrl+Shift+P` / `Cmd+Shift+P`\n2. Type `Extensions: Install from VSIX`\n3. Select the downloaded `.vsix` file\n\n## Usage\n\n### Getting Started\n\n1. Open VSCode with a workspace containing multiple Git repositories\n   - You can use **multi-root workspace**: `File → Open Folder` → add multiple folders\n   - Or open a parent folder that contains nested Git repos\n2. The status bar shows `Repos: N` once repos are detected\n3. Press `Ctrl+Shift+P` / `Cmd+Shift+P` and search for `Multi-Repo:` commands\n\n### Available Commands\n\n| Command | Description |\n|---------|-------------|\n| `Multi-Repo: Switch Branch (All Repos)` | Pick a branch — all repos check it out |\n| `Multi-Repo: Batch Commit` | Type a message — commits all repos with changes |\n| `Multi-Repo: Pull All` | Pull all repos |\n| `Multi-Repo: Push All` | Push all repos (asks for confirmation first) |\n| `Multi-Repo: Fetch All` | Fetch from all remotes |\n| `Multi-Repo: Show Repo Status` | Display detailed status for each repo |\n| `Multi-Repo: Refresh Repos` | Re-scan workspace for repos |\n\n### Output Log\n\nTo see exactly what git commands are running:\n\n1. `View → Output`\n2. In the dropdown, select **\"Multi-Repo Manager\"**\n\nEach command logs its execution with timestamps:\n\n```\n[RUN] 14:23:01 [my-app] git pull\n[OK]  14:23:03 [my-app]\n[RUN] 14:23:03 [shared-lib] git pull\n[FAIL] 14:23:05 [shared-lib] error: Your local changes would be overwritten...\n```\n\n## Troubleshooting\n\n### No repos detected\n\n- Make sure each repo has a valid `.git` folder\n- Try `Multi-Repo: Refresh Repos` to re-scan\n- If using a multi-root workspace, add each repo folder individually via `File → Add Folder to Workspace`\n\n### Push/Pull fails\n\n- Check the Output log for the specific error message\n- Common cause: uncommitted local changes conflicting with remote changes\n- Use `git stash` or commit changes before pulling\n\n### Permission denied\n\n- Ensure Git is installed and accessible from terminal: run `git --version` in a terminal\n- On macOS, you may need to allow VSCode to access Git in System Preferences\n\n## Architecture\n\n```\nsrc/\n├── extension.ts          # Entry point, command registration, status bar, tree view\n├── logger.ts            # OutputChannel wrapper for logging\n├── repoDetector.ts      # Scans workspace for .git folders\n├── gitRunner.ts         # Executes git commands via child_process\n└── commands/\n    ├── switchBranch.ts  # Batch branch switch\n    ├── batchCommit.ts   # Batch commit with same message\n    ├── batchPull.ts     # Batch git pull\n    ├── batchPush.ts     # Batch git push (with confirmation)\n    └── batchFetch.ts    # Batch git fetch\n```\n\n## Contributing\n\nIssues and PRs are welcome! If you find a bug or want a new feature, open an issue.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faiyogg%2Fmulti-repo-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faiyogg%2Fmulti-repo-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faiyogg%2Fmulti-repo-manager/lists"}