{"id":26051469,"url":"https://github.com/ohyaan/gitfleet","last_synced_at":"2025-03-08T04:55:17.148Z","repository":{"id":281105088,"uuid":"940574595","full_name":"ohyaan/gitfleet","owner":"ohyaan","description":"GitFleet is a tool for managing multiple Git repositories through a single configuration file.","archived":false,"fork":false,"pushed_at":"2025-03-07T01:49:30.000Z","size":10,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-07T02:33:17.043Z","etag":null,"topics":["development-tools","git","git-tools","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ohyaan.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}},"created_at":"2025-02-28T12:19:47.000Z","updated_at":"2025-03-07T01:49:33.000Z","dependencies_parsed_at":"2025-03-07T02:33:20.550Z","dependency_job_id":"d39c74ff-c291-4c68-9d06-48b871311bd5","html_url":"https://github.com/ohyaan/gitfleet","commit_stats":null,"previous_names":["ohyaan/gitfleet"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohyaan%2Fgitfleet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohyaan%2Fgitfleet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohyaan%2Fgitfleet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohyaan%2Fgitfleet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ohyaan","download_url":"https://codeload.github.com/ohyaan/gitfleet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242501078,"owners_count":20139320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["development-tools","git","git-tools","python"],"created_at":"2025-03-08T04:55:16.683Z","updated_at":"2025-03-08T04:55:17.144Z","avatar_url":"https://github.com/ohyaan.png","language":"Python","readme":"# GitFleet\n\nGitFleet is a tool for managing multiple Git repositories through a single configuration file.\nIt simplifies repository synchronization across teams and environments.\n\n## Key Features\n\n- **Batch Management**: Clone and update multiple repositories simultaneously\n- **Flexible Revision Control**: Support for SHA1 hashes, tags, and branches\n- **Git Submodule Integration**: Support for Git submodule\n- **Shallow Clone Support**: Save bandwidth and storage for large repositories\n- **Anchor Functionality**: Lock repository revisions for reproducible environments\n\n## Requirements\n\n- Python 3.7 or later (zero external dependencies)\n- Git command-line tool\n\n## Installation\n\n```bash\ncurl -L -o gitfleet https://github.com/ohyaan/gitfleet/blob/main/gitfleet.py\nchmod +x gitfleet\nmv gitfleet /usr/local/bin\n```\n\n## Quick Start Guide\n\n1. Create a `gitfleet.json` file in your project's root directory\n2. Define your repositories in the configuration\n3. Run `gitfleet` to synchronize all repositories\n\nExample `gitfleet.json`:\n```json\n{\n  \"schemaVersion\": \"v1\",\n  \"repositories\": [\n    {\n      \"src\": \"https://github.com/xxx/repo1.git\",\n      \"dest\": \"external/repo1\",\n      \"revision\": \"refs/tags/v1\"\n    },\n    {\n      \"src\": \"git@github.com:yyy/repo2.git\",\n      \"dest\": \"external/repo2\",\n      \"revision\": \"refs/heads/main\"\n    }\n  ]\n}\n```\n\n## Configuration Reference\n\n### Project Structure Example\n```\nmy-project/\n├── gitfleet.json    # Configuration file\n├── src/             # Your project source code\n├── external/        # Directory for managed repositories\n│   ├── repo1/       # First managed repository\n│   └── repo2/       # Second managed repository\n└── ...\n```\n\n### Repository Configuration Options\n\nEach repository entry supports the following properties:\n\n| Property | Description | Required | Default |\n|----------|-------------|----------|---------|\n| `src` | Repository URL (HTTPS or SSH) | Yes | - |\n| `dest` | Local destination path | Yes | - |\n| `revision` | Git revision specification | Yes | - |\n| `shallow-clone` | Enable shallow clone | No | `false` |\n| `clone-submodule` | Clone submodule | No | `false` |\n| `clone-subfleet` | Process nested fleet file | No | `false` |\n\n### Revision Formats\n\nGitFleet supports three revision formats:\n- **SHA1**: `\"revision\": \"a1b2c3d4e5f6\"` (exact commit)\n- **Tags**: `\"revision\": \"refs/tags/v1\"` (specific version)\n- **Branches**: `\"revision\": \"refs/heads/main\"` (latest on branch)\n\n## Advanced Usage\n\n### Anchoring Repositories\n\nLock all your repositories to specific commit SHAs for reproducibility:\n\n```bash\n# Update config file in place\ngitfleet --anchor\n\n# Save to a new file\ngitfleet --anchor fleet-anchored.json\n```\n\n#### Use Cases for Anchoring:\n- **Reproducible Builds**: Ensure consistent environments\n- **Release Management**: Snapshot dependencies for releases\n- **Debugging**: Record exact repository states for troubleshooting\n\n### Working with Submodule\n\nEnable submodule processing with the `clone-submodule` option:\n\n```json\n{\n  \"schemaVersion\": \"v1\",\n  \"repositories\": [\n    {\n      \"src\": \"https://github.com/xxx/repo1.git\",\n      \"dest\": \"external/repo1\",\n      \"revision\": \"refs/tags/v1\",\n      \"clone-submodule\": true\n    }\n  ]\n}\n```\n\n###  Working with SubFleet\n\nSupport hierarchical repository management with `clone-subfleet`:\n\n```json\n{\n  \"schemaVersion\": \"v1\",\n  \"repositories\": [\n    {\n      \"src\": \"https://github.com/username/sub-project.git\",\n      \"dest\": \"external/sub-project\",\n      \"revision\": \"refs/heads/main\",\n      \"clone-subfleet\": true\n    }\n  ]\n}\n```\n\nGitFleet will process the `gitfleet.json` found in the sub repository.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohyaan%2Fgitfleet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fohyaan%2Fgitfleet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohyaan%2Fgitfleet/lists"}