{"id":16849277,"url":"https://github.com/jpnurmi/vcs-x","last_synced_at":"2026-04-17T12:31:15.129Z","repository":{"id":219416978,"uuid":"748294740","full_name":"jpnurmi/vcs-x","owner":"jpnurmi","description":"VCS extensions with auto-completion for Bash and compact output suitable for large repo trees.","archived":false,"fork":false,"pushed_at":"2025-01-05T08:58:08.000Z","size":49,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-09T09:32:55.758Z","etag":null,"topics":["bash","git","repo","vcs"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpnurmi.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":"2024-01-25T17:17:28.000Z","updated_at":"2025-01-05T08:58:11.000Z","dependencies_parsed_at":"2024-04-06T08:27:20.141Z","dependency_job_id":"9ef26115-c0bb-4d7f-96ca-d60f1ea4b9f9","html_url":"https://github.com/jpnurmi/vcs-x","commit_stats":null,"previous_names":["jpnurmi/repo-x","jpnurmi/vcs-x"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jpnurmi/vcs-x","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpnurmi%2Fvcs-x","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpnurmi%2Fvcs-x/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpnurmi%2Fvcs-x/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpnurmi%2Fvcs-x/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpnurmi","download_url":"https://codeload.github.com/jpnurmi/vcs-x/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpnurmi%2Fvcs-x/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31929483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T10:35:34.458Z","status":"ssl_error","status_checked_at":"2026-04-17T10:35:09.472Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["bash","git","repo","vcs"],"created_at":"2024-10-13T13:14:47.952Z","updated_at":"2026-04-17T12:31:15.094Z","avatar_url":"https://github.com/jpnurmi.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VCS X\n\nVarious version control system extensions for [Git](https://git-scm.com) and\n[Repo](https://source.android.com/docs/setup/reference/repo) with auto-completion\nfor Bash and compact output suitable for large repo trees.\n\n## Installation\n\n```sh\n$ git clone --recurse-submodules https://github.com/jpnurmi/vcs-x.git ~/.vcs-x\n$ echo 'source ~/.vcs-x/vcs-x.sh' \u003e\u003e ~/.bashrc\n```\n\n## Environment\n\n- `REPO_MANIFEST_URL`: remote repo URL\n- `REPO_MIRROR_LOCATION`: local mirror path\n- `REPO_REMOTES`: common remote names\n\n## Usage\n\n### `git-remote-dup`\n\nDuplicates a Git remote. Commonly used remote names can be specified via the\n`REPO_REMOTES` environment variable.\n\n```sh\n$ git remote -v\norigin\tgit@github.com:jpnurmi/vcs-x.git (fetch)\norigin\tgit@github.com:jpnurmi/vcs-x.git (push)\n\n$ export REPO_REMOTES=\"foo bar\"\n\n$ git-remote-dup origin \u003cTAB\u003e\u003cTAB\u003e\nbar      foo      -h       --help   --https  --ssh\n\n$ git-remote-dup origin foo\nfoo\tgit@github.com:foo/vcs-x.git (fetch)\nfoo\tgit@github.com:foo/vcs-x.git (push)\norigin\tgit@github.com:jpnurmi/vcs-x.git (fetch)\norigin\tgit@github.com:jpnurmi/vcs-x.git (push)\n\n$ git-remote-dup --https origin bar\nbar\thttps://github.com/bar/vcs-x.git (fetch)\nbar\thttps://github.com/bar/vcs-x.git (push)\nfoo\tgit@github.com:foo/vcs-x.git (fetch)\nfoo\tgit@github.com:foo/vcs-x.git (push)\norigin\tgit@github.com:jpnurmi/vcs-x.git (fetch)\norigin\tgit@github.com:jpnurmi/vcs-x.git (push)\n```\n\n### `git-remote-https`, `git-remote-ssh`\n\nChanges Git remote URLs to HTTPS or SSH.\n\n```sh\n$ git remote -v\norigin\tgit@github.com:jpnurmi/vcs-x.git (fetch)\norigin\tgit@github.com:jpnurmi/vcs-x.git (push)\n\n$ git-remote-https origin\norigin\thttps://github.com/jpnurmi/vcs-x.git (fetch)\norigin\thttps://github.com/jpnurmi/vcs-x.git (push)\n\n$ git-remote-ssh origin\norigin\tgit@github.com:jpnurmi/vcs-x.git (fetch)\norigin\tgit@github.com:jpnurmi/vcs-x.git (push)\n```\n\n### `git-remote-tidy`\n\nBatch-deletes matching remote branches and tags.\n\n```sh\n$ git-remote-tidy origin f* bar\nTo github.com:jpnurmi/vcs-x.git\n - [deleted]         foo\n - [deleted]         bar\n```\n\n### `repo-branch`\n\nRuns `git branch` in all/specified projects.\n\n```sh\n$ repo-branch ark\u003cTAB\u003e\u003cTAB\u003e\narkcompiler_ets_frontend     arkcompiler_runtime_core     arkui_ace_engine             arkui_advanced_ui_component  arkui_ui_appearance          \narkcompiler_ets_runtime      arkcompiler_toolchain        arkui_ace_engine_lite        arkui_napi                   arkui_ui_lite\n\n$ repo-branch arkui_ace_engine arkui_napi\narkui_ace_engine master\narkui_napi no branch\n```\n\n### `repo-cd`\n\nChanges directory to the project or root.\n\n```sh\n$ repo-cd ark\u003cTAB\u003e\u003cTAB\u003e\narkcompiler_ets_frontend     arkcompiler_runtime_core     arkui_ace_engine             arkui_advanced_ui_component  arkui_ui_appearance          \narkcompiler_ets_runtime      arkcompiler_toolchain        arkui_ace_engine_lite        arkui_napi                   arkui_ui_lite\n\n$ repo-cd arkui_ace_engine\nfoundation/arkui/ace_engine$ repo-cd # repo root\n```\n\n### `repo-checkout`\n\nRuns `git checkout` in all projects.\n\n```sh\n$ repo-rev-parse \u003e sha1.txt\n$ repo-checkout sha1.txt\n```\n\n### `repo-clean`\n\nRuns `git clean` in all projects.\n\n```sh\n$ repo-clean -xdf\n```\n\n### `repo-diff`\n\nRuns `git diff` in all/specified projects.\n\n```sh\n$ repo-diff\n```\n\n### `repo-forall`\n\nSame as `repo forall` but with auto-completion:\n\n```sh\n$ repo-forall ark\u003cTAB\u003e\u003cTAB\u003e\narkcompiler_ets_frontend     arkcompiler_runtime_core     arkui_ace_engine             arkui_advanced_ui_component  arkui_ui_appearance          \narkcompiler_ets_runtime      arkcompiler_toolchain        arkui_ace_engine_lite        arkui_napi                   arkui_ui_lite\n```\n\n### `repo-ignore`\n\nIgnores files for `repo-status`.\n\n```sh\n$ repo-status\nsome_project\nNot currently on any branch.\nChanges not staged for commit:\n  (use \"git add \u003cfile\u003e...\" to update what will be committed)\n  (use \"git restore \u003cfile\u003e...\" to discard changes in working directory)\n\tmodified:   package-lock.json\n$ repo-ignore package-lock.json\n$ repo-status\n```\n\n### `repo-init`\n\nSame as `repo init` but with auto-completion:\n\n```sh\n$ repo-init -\u003cTAB\u003e\u003cTAB\u003e\n--archive          --clone-filter     --dissociate       --help             --manifest-url     --no-tags          -q                 --repo-url         --verbose          \n-b                 --config-name      -g                 -m                 --mirror           -p                 --quiet            --submodules       \n-c                 --current-branch   --groups           --manifest-branch  --no-clone-bundle  --partial-clone    --reference        -u                 \n--clone-bundle     --depth            -h                 --manifest-name    --no-repo-verify   --platform         --repo-rev         -v\n```\n\n### `repo-lfs-fetch`\n\nRuns `git lfs fetch` in all/specified projects.\n\n```sh\n$ repo-lfs-fetch -j8\nLFS fetch: 100% (487/487) vendor_unionman\n```\n\n```sh\n$ repo-lfs-fetch ark\narkcompiler_ets_frontend     arkcompiler_runtime_core     arkui_ace_engine             arkui_advanced_ui_component  arkui_ui_appearance          \narkcompiler_ets_runtime      arkcompiler_toolchain        arkui_ace_engine_lite        arkui_napi                   arkui_ui_lite                \n\n$ repo-lfs-fetch -v arkui_ace_engine arkui_napi\nLFS fetch: 50% (1/2) arkui_ace_engine\n...\nLFS fetch: 100% (2/2) arkui_napi\n...\n```\n\n### `repo-lfs-pull`\n\nRuns `git lfs pull` in all/specified projects.\n\n```sh\n$ repo-lfs-pull -j8\nLFS pull: 100% (487/487) vendor_unionman\n```\n\n```sh\n$ repo-lfs-pull ark\narkcompiler_ets_frontend     arkcompiler_runtime_core     arkui_ace_engine             arkui_advanced_ui_component  arkui_ui_appearance          \narkcompiler_ets_runtime      arkcompiler_toolchain        arkui_ace_engine_lite        arkui_napi                   arkui_ui_lite                \n\n$ repo-lfs-pull -v arkui_ace_engine arkui_napi\nLFS pull: 50% (1/2) arkui_ace_engine\n...\nLFS pull: 100% (2/2) arkui_napi\n...\n```\n\n### `repo-mirror`\n\nRuns `repo-sync` and `repo-lfs-fetch` in `REPO_MIRROR_LOCATION`.\n\n```sh\n$ repo-mirror -j8\n```\n\n### `repo-reset`\n\nRuns `git reset` in all projects.\n\n```sh\n$ repo-reset --hard\n```\n\n### `repo-rev-parse`\n\nRuns `git rev-parse` for `HEAD`/ref in all projects.\n\n```sh\n$ repo-rev-parse \u003e sha1.txt\n$ repo-checkout sha1.txt\n```\n\n### `repo-status`\n\nRuns `git status` in all/specified projects.\n\n```sh\n$ repo-status ark\u003cTAB\u003e\u003cTAB\u003e\narkcompiler_ets_frontend     arkcompiler_runtime_core     arkui_ace_engine             arkui_advanced_ui_component  arkui_ui_appearance          \narkcompiler_ets_runtime      arkcompiler_toolchain        arkui_ace_engine_lite        arkui_napi                   arkui_ui_lite\n\n$ repo-status arkui_ace_engine arkui_napi\narkui_ace_engine nothing to commit, working tree clean\narkui_napi nothing to commit, working tree clean\n```\n\n### `repo-sync`\n\n`repo sync` with auto-completion.\n\n```sh\n$ repo-sync -\u003cTAB\u003e\u003cTAB\u003e\n-c                          --fail-fast                 --help                      --manifest-name             --no-clone-bundle           --prune                     --smart-sync\n--clone-bundle              --fetch-submodules          -j                          --manifest-server-password  --no-manifest-update        -q                          --smart-tag\n--current-branch            --force-broken              --jobs                      --manifest-server-username  --no-repo-verify            --quiet                     -t\n-d                          --force-remove-dirty        -l                          -n                          --no-tags                   --retry-fetches             -u\n--detach                    --force-sync                --local-only                --network-only              --optimized-fetch           -s                          -v\n-f                          -h                          -m                          --nmu                       -p                          --skip-hook                 --verbose\n```\n\n### `repo-unignore`\n\nUnignores files for `repo-status`.\n\n```sh\n$ repo-status\n$ repo-unignore package-lock.json\n$ repo-status\nsome_project\nNot currently on any branch.\nChanges not staged for commit:\n  (use \"git add \u003cfile\u003e...\" to update what will be committed)\n  (use \"git restore \u003cfile\u003e...\" to discard changes in working directory)\n\tmodified:   package-lock.json\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpnurmi%2Fvcs-x","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpnurmi%2Fvcs-x","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpnurmi%2Fvcs-x/lists"}