{"id":13529045,"url":"https://github.com/deanishe/alfred-repos","last_synced_at":"2025-04-06T14:12:40.033Z","repository":{"id":18339025,"uuid":"21518597","full_name":"deanishe/alfred-repos","owner":"deanishe","description":"Browse, search and open Git repositories in Alfred","archived":false,"fork":false,"pushed_at":"2023-12-08T16:20:53.000Z","size":3081,"stargazers_count":315,"open_issues_count":10,"forks_count":23,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-30T12:09:16.896Z","etag":null,"topics":["alfred","alfred-workflow","alfred3","browse","git","repos"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deanishe.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":"2014-07-05T11:25:33.000Z","updated_at":"2025-03-10T20:58:30.000Z","dependencies_parsed_at":"2024-06-21T17:31:57.369Z","dependency_job_id":"5db8d973-c855-4c9d-b20f-02bbbcd1ea7d","html_url":"https://github.com/deanishe/alfred-repos","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanishe%2Falfred-repos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanishe%2Falfred-repos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanishe%2Falfred-repos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanishe%2Falfred-repos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deanishe","download_url":"https://codeload.github.com/deanishe/alfred-repos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492564,"owners_count":20947545,"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":["alfred","alfred-workflow","alfred3","browse","git","repos"],"created_at":"2024-08-01T07:00:32.167Z","updated_at":"2025-04-06T14:12:40.010Z","avatar_url":"https://github.com/deanishe.png","language":"Python","funding_links":[],"categories":["Python","Developer"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"./src/icon.png\" width=\"128\" height=\"128\"\u003e\n\u003c/h1\u003e\n\nGit Repos Workflow for Alfred\n=============================\n\nBrowse, search and open Git repositories from within Alfred.\n\n![][demo]\n\n\nDownload\n--------\n\nGet the workflow from [GitHub releases][gh-releases].\n\n**Versions 2.2+ are not compatible with Alfred 3 and earlier.**\n\nFor Alfred 3, download [version 2.1.2][v2.1.2], and for Alfred 2, please download [version 1.7][v1.7].\n\n\nUsage\n-----\n\nThis workflow requires some configuration before use. See [Configuration](#configuration) for details.\n\n- `repos [\u003cquery\u003e]` — Show a list of your Git repos filtered by `\u003cquery\u003e`\n\t+ `↩` — Open selected repo in `app_default` (see [configuration](#configuration))\n\t+ `⌘+↩` — Open selected repo in `app_cmd` (see [configuration](#configuration))\n\t+ `⌥+↩` — Open selected repo in `app_alt` (requires [configuration](#configuration))\n\t+ `^+↩` — Open selected repo in `app_ctrl` (requires [configuration](#configuration))\n\t+ `⇧+↩` — Open selected repo in `app_shift` (requires [configuration](#configuration))\n\t+ `fn+↩` — Open selected repo in `app_fn` (requires [configuration](#configuration))\n\t+ `⌘⌥+↩` — Open selected repo in `app_cmd_alt` (requires [configuration](#configuration))\n  + `⌘⌥⇧+↩` — Open selected repo in `app_cmd_alt_shift` (requires [configuration](#configuration))\n  + etc.\n  + etc.\n- `reposettings` — Open `settings.json` in default JSON editor\n- `reposupdate` — Force workflow to update its cached list of repositories. (By default, the list will only be updated—in the background—every 3 hours.)\n- `reposhelp` — Open this file in your browser\n\n\nConfiguration\n-------------\n\nBefore you can use this workflow, you have to configure one or more folders in which the workflow should search for Git repos. The workflow uses `find` to search for `.git` directories, so you shouldn't add *huge* directory trees to it, and use the `depth` option to restrict the search depth. Typically, a `depth` of `2` will be what you want (i.e. search within subdirectories of specified directory, but no lower). Add directories to search to the `search_dir` array in `settings.json` (see below).\n\nThe default `settings.json` file looks like this:\n\n```javascript\n{\n  \"app_default\": \"Finder\",               // ↩ to open in this/these app(s)\n  \"app_cmd\": \"Terminal\",                 // ⌘+↩ to open in this/these app(s)\n  \"app_alt\": null,                       // ⌥+↩ to open in this/these app(s)\n  \"app_ctrl\": null,                      // ^+↩ to open in this/these app(s)\n  \"app_shift\": null,                     // ⇧+↩ to open in this/these app(s)\n  \"app_fn\": null,                        // fn+↩ to open in this/these app(s)\n  \"global_exclude_patterns\": [],         // Exclude from all searches\n  \"search_dirs\": [\n    {\n      \"path\": \"~/delete/this/example\",   // Path to search. ~/ is expanded\n      \"depth\": 2,                        // Search subdirs of `path`\n      \"name_for_parent\": 1,              // Name Alfred entry after parent of `.git`. 2 = grandparent of `.git` etc.\n      \"excludes\": [                      // Excludes specific to this path\n        \"tmp\",                           // Directories named `tmp`\n        \"bad/smell/*\"                    // Subdirs of `bad/smell` directory\n      ]\n    }\n  ]\n}\n```\n\nThis is my `settings.json`:\n\n```javascript\n{\n  \"app_alt\": \"iTerm\",\n  \"app_cmd\": \"Finder\",\n  \"app_cmd_alt\": [\n    \"VSCodium\", \n    \"Finder\", \n    \"SourceTree\", \n    \"iTerm\"\n  ],\n  \"app_ctrl\": \"SourceTree\", \n  \"app_default\": \"VSCodium\", \n  \"app_shift\": \"Browser\", \n  \"global_exclude_patterns\": [], \n  \"search_dirs\": [\n    {\n      \"depth\": 3, \n      \"path\": \"~/Code\"\n    }, \n    {\n      \"path\": \"~/Sites\"\n    },\n    {\n      \"path\": \"~/src/git.deanishe.net/deanishe\"\n    }, \n    {\n      \"path\": \"~/src/github.com/deanishe\"\n    }\n  ]\n}\n```\n\n**Note:** If you specify `Browser`, `Safari`, `Google Chrome`, `Webkit` or `Firefox` as an application, it will be passed the remote repo URL, not the local filepath. `Browser` will open the URL in your default browser.\n\nYou can also change the default update interval (3h) in the workflow's configuration sheet in Alfred Preferences. Change the `UPDATE_EVERY_MINS` workflow variable to suit your needs.\n\n\n### Search Directories ###\n\nEach entry in the `search_dirs` list must be a mapping.\n\nOnly `path` is required. `depth` will default to `2` if not specified. `excludes` are globbing patterns, like in `.gitignore`.\n\n`name_for_parent` defaults to `1`, which means the entry in Alfred's results should be named after the directory containing the `.git` directory. If you want Alfred to show the name of the grandparent, set `name_for_parent` to `2` etc.\n\nThis is useful if your projects are structured, for example, like this and `src` is the actual repo:\n\n```\nCode\n  Project_1\n    src\n    other_stuff\n  Project_2\n    src\n    other_stuff\n  …\n  …\n```\n\nSet `name_for_parent` to `2`, and `Project_1`, `Project_2` etc. will be shown in Alfred, not `src`, `src`, `src`…\n\n\n### Open in Applications ###\n\nThe applications specified by the `app_XYZ` options are all called using `open -a AppName path/to/directory`. You can configure any application that can open a directory in this manner. Some recommendations are Sublime Text, SourceTree, GitHub or iTerm.\n\nThe meta app `Browser` will open the repo's `remote/origin` URL in your default browser. Other recognised browsers are `Safari`, `Google Chrome`, `Firefox` and `WebKit`.\n\n**Note:** As you can see from my `settings.json`, you can also set an `app_XYZ` value to an array of applications to open the selected repo in more than one app at once:\n\n```\n…\n  \"app_cmd\": [\"Finder\", \"Sublime Text\", \"SourceTree\", \"iTerm\"],\n…\n```\n\nIn versions 3+ (i.e. in Alfred 4), you can also arbitrarily combine modifiers to give yourself many more options:\n\n```\n\"app_cmd_alt\": \"Finder\",\n\"app_shift_alt_cmd\": \"VSCodium\",\n\"app_cmd_fn_alt\": \"Oni\",\netc.\netc.\n```\n\nModifiers may be specified in any order. The only requirements are that the key must start with `app_` and the modifiers must be separated by `_`.\n\nYou can also use `→` on a result to access Alfred's default File Actions menu.\n\n\nLicense, Thanks\n---------------\n\nThis workflow is released under the [MIT Licence][mit].\n\nIt uses the [Alfred-Workflow][aw] and [docopt][docopt] libraries (both MIT Licence).\n\nThe icon is by [Jason Long][jlong], from [git-scm.com][git], released under the [Creative Commons Attribution 3.0 Unported Licence][cc].\n\n\n[aw]: https://github.com/deanishe/alfred-workflow\n[cc]: http://creativecommons.org/licenses/by/3.0/\n[demo]: https://raw.githubusercontent.com/deanishe/alfred-repos/master/demo.gif\n[docopt]: http://docopt.org/\n[gh-releases]: https://github.com/deanishe/alfred-repos/releases/latest\n[git]: http://git-scm.com/downloads/logos\n[jlong]: http://twitter.com/jasonlong\n[mit]: http://opensource.org/licenses/MIT\n[packal]: http://www.packal.org/workflow/git-repos\n[v2.1.2]: https://github.com/deanishe/alfred-repos/releases/tag/v2.1.2\n[v1.7]: https://github.com/deanishe/alfred-repos/releases/tag/v1.7\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeanishe%2Falfred-repos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeanishe%2Falfred-repos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeanishe%2Falfred-repos/lists"}