{"id":13732398,"url":"https://github.com/thecasualcoder/gg","last_synced_at":"2025-05-08T06:32:14.573Z","repository":{"id":83120947,"uuid":"193817086","full_name":"thecasualcoder/gg","owner":"thecasualcoder","description":"A tool to manage multiple git repositories","archived":false,"fork":false,"pushed_at":"2020-10-10T08:26:49.000Z","size":11086,"stargazers_count":76,"open_issues_count":13,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-09T05:17:52.473Z","etag":null,"topics":["cli","git","git-governance","hacktoberfest","multi-git"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/thecasualcoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"Contributing.md","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}},"created_at":"2019-06-26T02:43:13.000Z","updated_at":"2024-10-17T14:43:51.000Z","dependencies_parsed_at":"2024-01-07T21:02:54.139Z","dependency_job_id":"5c2a4fb3-f5c9-4da8-991f-7b11fcf33244","html_url":"https://github.com/thecasualcoder/gg","commit_stats":{"total_commits":125,"total_committers":5,"mean_commits":25.0,"dds":0.488,"last_synced_commit":"ad613d99fdfac36c75fd70054f5eba2fb1074c46"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecasualcoder%2Fgg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecasualcoder%2Fgg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecasualcoder%2Fgg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecasualcoder%2Fgg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thecasualcoder","download_url":"https://codeload.github.com/thecasualcoder/gg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224708253,"owners_count":17356509,"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":["cli","git","git-governance","hacktoberfest","multi-git"],"created_at":"2024-08-03T02:01:55.524Z","updated_at":"2024-11-14T23:32:19.229Z","avatar_url":"https://github.com/thecasualcoder.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"#### Git Governance\n[![Build Status](https://travis-ci.org/thecasualcoder/gg.svg?branch=master)](https://travis-ci.org/thecasualcoder/gg)\n\nA tool to manage multiple git repositories. \nThis does not aim to replace git in any way but tries to reduce the work in managing multiple git repositories at once.\nTo know about the story behind this tool, take a look at this blog -\u003e https://medium.com/@jpninanjohn/we-built-a-tool-in-rust-9c1bcb9b655e\n\n#### Installation\n\nUsing Brew:\n\n```bash\nbrew tap thecasualcoder/stable\nbrew install gg\n```\n\nInstalling from source:\n```bash\ngit clone https://github.com/thecasualcoder/gg.git\ncd gg\ncargo install --path .\n```\n\n\u003e Note: Recommaded rustc/cargo version: 1.36.0 and above or 1.37.0-nightly and above \n\n\n#### Usage:\n\n##### Help:\n```bash\n$ gg --help\n```\n![Help](/gifs/ggHelp.gif)\n\n##### Status:\nShows status of all git repos from current directory. Traverses inside directories also. \nTo traverse through hidden directories use the `-i` flag. By default hidden directories will not be traversed.\n\n```bash\n$ gg status\n```\n![Status](/gifs/ggStatus.gif)\n\n##### Create:\nCreates a remote repository and clones it to the local path specified. Remote repository is created based on the GITHUB_TOKEN provided.\nGITHUB_TOKEN can be passed as an env variable or can be given as an argument through the `-t` flag\n```bash\n$ gg create -r \u003crepo_name\u003e -l \u003clocal_path\u003e\n```\n![Create](/gifs/ggCreate.gif)\n\n##### Fetch:\nFetches from all git repositories starting from current directory. Traverses inside directories also.\nCurrently Fetch only uses the private key `id_rsa` to authenticate and will fail to fetch if it is not enough. Failure to fetch one repo will not fail others\nTo traverse through hidden directories use the `-i` flag. By default hidden directories will not be traversed.\n```bash\n$ gg fetch \n```\n![Fetch](/gifs/ggFetch.gif)\n\n##### Clone:\nClones repositories based on the flags passed and the configuration given in the `.ggConf.yaml` file.\n```bash\n$ gg clone -r \u003cremote_url_1\u003e -r \u003cremote_url_2\u003e -l \u003clocal_path\u003e  \n```\n![Clone](/gifs/ggClone.gif)\n\n##### Config file:\n\nThe config file can be specified via the `-c` flag. By default it tries to find `.ggConf.yaml`.\nExample config file:\n\n```yaml\nskipDirectories:\n  - ignore\ncloneRepos:\n  - remoteURL: https://github.com/golang/net.git\n    localPath: here/net\n  - remoteURL: https://github.com/golang/net.git\n    localPath: there/net\nssh:\n    privateKey: '/home/ninan/.ssh/gg'\n    username: 'git'\n    ssh_agent: false\n```\n\nSee `.ggConf.example.yaml` for more details\n\n##### Contributing:\n[Please refer the github projects board](https://github.com/thecasualcoder/gg/projects/1)\nIf you want some feature, please create an issue and if possible feel free to raise PR too.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecasualcoder%2Fgg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecasualcoder%2Fgg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecasualcoder%2Fgg/lists"}