{"id":18607603,"url":"https://github.com/scheirle/git-gerrit-bridge","last_synced_at":"2026-03-02T05:02:45.807Z","repository":{"id":225895690,"uuid":"767145510","full_name":"Scheirle/git-gerrit-bridge","owner":"Scheirle","description":"Git subcommand to ease local branch management with gerrit.","archived":false,"fork":false,"pushed_at":"2024-04-29T04:42:07.000Z","size":45,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-25T15:29:41.250Z","etag":null,"topics":["gerrit","git"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Scheirle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2024-03-04T19:32:36.000Z","updated_at":"2024-04-29T04:41:11.000Z","dependencies_parsed_at":"2024-04-28T09:24:24.104Z","dependency_job_id":"54ed5a0e-c1d4-4fbe-abbe-edd754f52c31","html_url":"https://github.com/Scheirle/git-gerrit-bridge","commit_stats":null,"previous_names":["scheirle/git-gerrit-bridge"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/Scheirle/git-gerrit-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scheirle%2Fgit-gerrit-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scheirle%2Fgit-gerrit-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scheirle%2Fgit-gerrit-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scheirle%2Fgit-gerrit-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Scheirle","download_url":"https://codeload.github.com/Scheirle/git-gerrit-bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Scheirle%2Fgit-gerrit-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29993048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"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":["gerrit","git"],"created_at":"2024-11-07T02:30:13.536Z","updated_at":"2026-03-02T05:02:45.778Z","avatar_url":"https://github.com/Scheirle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Git Gerrit Bridge\n\n[![PyPI - Version](https://img.shields.io/pypi/v/git-gerrit-bridge.svg)](https://pypi.org/project/git-gerrit-bridge)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/git-gerrit-bridge.svg)](https://pypi.org/project/git-gerrit-bridge)\n\n-----\n\n**Table of Contents**\n\n- [Motivation](#motivation)\n- [Usage](#usage)\n- [Installation](#installation)\n- [License](#license)\n\n## Motivation\nWorking with git and gerrit can be done in numerous ways, just to name a few:\n* No local branches and purely in detached HEAD mode\n* One local branch per remote branch\n* One local branch per bug/feature\n\nFeature branches have the downside that there will be many and to keep the overview\nthey have to be cleaned up/deleted regularly.\n\nGit can do this for fully integrated branches with `git branch -d \u003cbranch\u003e`.\nThe issue is that often changes are purely modified in gerrit (rebase or online edits),\npreventing git from detecting if a local branch is fully integrated or not (git hashes differ).\n\nThe `git gerrit` script maps local changes to remote changes and can therefore handle such situations.\u003cbr\u003e\nLet's look at an example usage.\n\n## Usage\n* Create a new local branch `topic-1`, tracking the remote `origin/development` branch:\u003cbr\u003e\n  `git gerrit new development topic-1`\n* Do the implementation and commit:\u003cbr\u003e\n  `touch feature.txt`\u003cbr\u003e\n  `git add feature.txt`\u003cbr\u003e\n  `git commit -m \"Added feature.txt\"`\n* Upload changes to gerrit (Commit chains are fine):\u003cbr\u003e\n  The remote tracking branch is automatically used as target\u003cbr\u003e\n  `git gerrit push`\n* Get an overview of your changes (remote and local):\u003cbr\u003e\n  `git gerrit status`\u003cbr\u003e\n```\n┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓\n┃ Number  ┃ Subject                                       ┃   Status    ┃ Remote Branch  ┃ Local Branch ┃\n┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩\n│ 1000001 │ 🌐 Change only available in gerrit            │ Only Remote │ development    │              │\n│ 1000003 │ 🌐 Change was edited or rebased in gerrit     │  Old Local  │ development    │ stale        │\n│ 1000004 │ 🌐 Change was amended locally                 │ Old Remote  │ development    │ active       │\n│ 1000009 │ 🌐 Added feature.txt                          │   In Sync   │ development    │ topic-1      │\n│ 1000005 │ 🌐 Local and remote change have the same hash │   In Sync   │ feature-1      │ chain        │\n│         │ ⚡ Local change not yet pushed to gerrit      │ Only Local  │ hot-fix        │ hacking      │\n│ 1000006 │ 🐞 Follow up for 1000005 as commit chain      │   In Sync   │ feature-1      │ chain        │\n│ 1000007 │ ❌ Change was merged in gerrit                │   Merged    │ development    │ bug123       │\n│ 1000008 │ ❌ Change was abandoned in gerrit             │  Abandoned  │ development    │ bug321       │\n└─────────┴───────────────────────────────────────────────┴─────────────┴────────────────┴──────────────┘\n 🌐 Remote Change; ⚡ Local Change; 🐞 WIP Change; ❌ To be deleted; Click Number to open in browser\n```\n\n* Remove fully integrated branches:\u003cbr\u003e\n  `git gerrit clean`\u003cbr\u003e\n```\nCleaning 8 branches:\nbranch_with_no_remote  ? Commits Skipped (no remote set)\nactive                 1 Commits Skipped (Not yet merged)\nbug123                 1 Commits Deleted\nbug321                 1 Commits Deleted\nchain                  2 Commits Skipped (Not yet merged)\nhacking                1 Commits Skipped (Not yet pushed)\nstale                  1 Commits Skipped (Not yet merged)\ntopic-1                1 Commits Skipped (Not yet merged)\n```\n\nFurther commands are:\n* `git gerrit checkout \u003cnumber\u003e \u003cbranch\u003e`\u003cbr\u003e\n  to download and checkout a gerrit change in a new local branch\n* `git gerrit rebase`\u003cbr\u003e\n  to start an interactive rebase of the local changes without rebasing on the remote.\n* `git gerrit sync`\u003cbr\u003e\n  to rebase the current branch by picking remote and local changes depending on which is newer.\n\n## Installation\n\n```console\npip install git-gerrit-bridge\n```\n\n## License\n\n`git-gerrit` is distributed under the terms of the [GPL-3.0-or-later](https://spdx.org/licenses/GPL-3.0-or-later.html) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscheirle%2Fgit-gerrit-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscheirle%2Fgit-gerrit-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscheirle%2Fgit-gerrit-bridge/lists"}