{"id":16001540,"url":"https://github.com/9999years/git-prole","last_synced_at":"2025-05-01T02:31:08.384Z","repository":{"id":257030679,"uuid":"857126697","full_name":"9999years/git-prole","owner":"9999years","description":"A git-worktree(1) manager","archived":false,"fork":false,"pushed_at":"2024-11-18T19:36:42.000Z","size":313,"stargazers_count":16,"open_issues_count":18,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T08:05:06.419Z","etag":null,"topics":["git","git-worktree"],"latest_commit_sha":null,"homepage":"https://9999years.github.io/git-prole/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/9999years.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-09-13T21:24:05.000Z","updated_at":"2025-02-08T09:05:30.000Z","dependencies_parsed_at":"2024-10-21T17:36:44.856Z","dependency_job_id":null,"html_url":"https://github.com/9999years/git-prole","commit_stats":null,"previous_names":["9999years/git-prole"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9999years%2Fgit-prole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9999years%2Fgit-prole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9999years%2Fgit-prole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9999years%2Fgit-prole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/9999years","download_url":"https://codeload.github.com/9999years/git-prole/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251812327,"owners_count":21647885,"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":["git","git-worktree"],"created_at":"2024-10-08T09:44:21.336Z","updated_at":"2025-05-01T02:31:08.113Z","avatar_url":"https://github.com/9999years.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# git-prole\n\n\u003ca href=\"https://crates.io/crates/git-prole\"\u003e\n\u003cimg src=\"https://img.shields.io/crates/v/git-prole\" alt=\"Crates.io\"\u003e\n\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://repology.org/project/git-prole/versions\"\u003e\n\u003cimg src=\"https://repology.org/badge/vertical-allrepos/git-prole.svg?header=\" alt=\"Packaging status\"\u003e\n\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://9999years.github.io/git-prole/\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/User%20manual-9999years.github.io%2Fgit--prole-blue\" alt=\"User manual\"\u003e\n\u003c/a\u003e\n\u003cbr\u003e\n\nA [`git-worktree(1)`][git-worktree] manager.\n\n[git-worktree]: https://git-scm.com/docs/git-worktree\n\nA normal Git checkout looks like this:\n\n```\nmy-repo/\n  .git/\n  README.md\n  ...\n```\n\nWorktrees allow you to associate multiple checkouts with one `.git` directory,\nlike this:\n\n```\nmy-repo/\n  .git/      # A bare repository\n  main/      # A checkout for the main branch\n    README.md\n  feature1/  # A checkout for work on a feature\n    README.md\n  ...\n```\n\nThis makes it a lot easier to keep a handful of branches 'in flight' at the\nsame time, and it's often handy to be able to compare your work against a local\ncheckout of the main branch without switching branches.\n\nUnfortunately, the built-in `git worktree` commands don't make it very easy to\nset up repositories with this layout. `git-prole` exists to paper over these\ndeficiencies.\n\n## Features\n\n* Clone a repository into a worktree checkout with `git prole clone URL\n  [DESTINATION]`.\n\n* Convert an existing repository into a worktree checkout with `git prole\n  convert`.\n\n* Add a new worktree with `git prole add`.\n\n  * `git prole add feature1` will create a `feature1` directory next to the\n    rest of your worktrees; `git worktree add feature1`, in contrast, will\n    create a `feature1` subdirectory nested under the current worktree.\n\n  * Branches created with `git prole add` will start at and track the\n    repository's main branch by default.\n\n  * `git prole add` will copy untracked files to the new worktree by default,\n    making it easy to start a new worktree with a warm build cache.\n\n  * `git prole add` can run commands when a new worktree is created, so that\n    you can warm up caches by running a command like `direnv allow`.\n\n  * `git prole add` can perform regex substitutions on branch names to compute\n    a directory name, so that you can run `git prole add -b\n    myname/team-1234-my-ticket-with-a-very-long-title` and get a directory name\n    like `my-ticket`.\n\n  * `git prole add` respects the `-c`/`--create` option (to match `git\n    switch`); `git worktree add` only allows `-b` (with no long-form option\n    available).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F9999years%2Fgit-prole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F9999years%2Fgit-prole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F9999years%2Fgit-prole/lists"}