# GitLink It's a Sublime Text plugin for shareable URLs to files in your source repositories. No more traversing your file structure to find the file you are working on. With support for [GitHub][], [Bitbucket][], [GitLab][], and many more. See [the full list][support] or [configure your own][configuration]. ## How it works | Sidebar | File content | |:-:|:-:| |![Right click in the sidebar][sidebar-menu]|![Right click in a file][context-menu]| Or search for "GitLink" in the Command Palette Ctrl+Shift+P (Cmd+Shift+P on MacOS). ### Copy URLs to files Right click any Git-tracked file in the sidebar and go to the **GitLink** menu item to see options, or Ctrl+Shift+C to copy the URL for the current file (Cmd+Shift+C on MacOS). ### Copy URLs to files with a deeplink to the line number Right click anywhere within the file you are currently editing. Your cursor position determines which line number will be used for the deeplink. If supported by the Git service provider, you can select multiple lines to deeplink the line range. ### Open URLs in your default browser as a new tab Ctrl+Shift+O to skip a step and open any of the links in a new tab of your default web browser (Cmd+Shift+O on MacOS). ## Installation The easiest way is to install is using [Package Control][pc]. Search for **GitLink** in the PC client plugin and install. To install manually, clone or symlink `https://github.com/rscherf/GitLink.git` (or your fork) into the Sublime Text `Packages` folder: + Mac: `~/Library/Application Support/Sublime Text/Packages` + Linux: `~/.config/sublime-text/Packages` + Windows: `%APPDATA%\Sublime Text\Packages` ## Git service provider support Repository hosts are listed alphabetically. ### Upon install [Arch Linux][][^gitlab], [Assembla][], [Azure][] (unverified), [Bitbucket][], [Codebase][], [Codeberg][][^forgejo], Debian [Salsa][][^gitlab], [Eclipse][][^gitlab], [GitHub][], [GitLab][], [Gitea][], [Gitee][], [GNOME][][^gitlab], GNU [Savannah][][^cgit], [Gogs][], [Launchpad][][^cgit], [Kernel.org][][^cgit], [KDE][][^gitlab], Fedora [Pagure][], [Phabricator][], [Phorge][], [Radicle][], [RhodeCode][], [Sourcehut][], [SourceForge][][^sourceforge], [Tangled][], and [TuxFamily][][^cgit] ### With domain configuration Any of the above plus [CGit][], [Gerrit][], [GitWeb][] (which comes with Git), and [Forgejo][] If you have a supported host with their host ID in the hostname, no configuration is required: e.g. `gitlab.example.com`. ### With full configuration Any site you want. Please open an issue or PR if it would help others. ## Configuration Things work out of the box for many Git hosts. To customize further, use the **Preferences: GitLink Settings** command to open the settings. Defaults are on the left, and your changes are on the right. ### Repo matching If you self-host a Git provider, you can link your domain to its format with `"user_repo_lookup"`: Make a map of (JSON-escaped) domain-matching regular expressions to the ID of the Git software your server runs. If you need to create a new Git provider, first consider making a PR here. Otherwise, use `"user_repo_hosts"` and follow the sample in the settings file, or copy and modify one from the defaults below it. ### Link format To switch to generating permanent links that reference a Git commit hash instead of branch name, set `"revision_type": "commithash"`. Commits not pushed to the server will 404. ## Contribute Git and Sublime Text are powerful; I know all of you can make this way better than me. 1. Fork / clone the repository. 1. Add whatever you'd like. 1. Run tests with the [UnitTesting][] package. 1. Submit a Pull Request. ## Copyright 1. Star the Github repository. 1. Follow [@ryanscherf][twitter] on Twitter, and tell me how much you love this plugin. 1. Use it however you'd like. [^cgit]: Linked to `cgit` [^forgejo]: Linked to `forgejo` [^gitlab]: Linked to `gitlab` [^sourceforge]: [SourceForge][] does not support blame or line numbers. [support]: https://github.com/rscherf/GitLink#git-service-provider-support [configuration]: https://github.com/rscherf/GitLink#configuration [arch linux]: https://gitlab.archlinux.org [assembla]: https://get.assembla.com [azure]: https://azure.microsoft.com/en-us/products/devops/ [bitbucket]: https://bitbucket.org [cgit]: https://git.zx2c4.com/cgit/about/ [codebase]: https://codebasehq.com [codeberg]: https://codeberg.org [eclipse]: https://www.eclipse.org [forgejo]: https://forgejo.org [gerrit]: https://www.gerritcodereview.com [gitea]: https://gitea.com [gitee]: https://gitee.com [github]: https://github.com [gitlab]: https://about.gitlab.com [gitweb]: https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb [gnome]: https://gitlab.gnome.org [gogs]: https://gogs.io [kde]: https://invent.kde.org [kernel.org]: https://kernel.org [launchpad]: https://code.launchpad.net [pagure]: https://pagure.io [phabricator]: https://phacility.com/phabricator [phorge]: https://we.phorge.it [radicle]: https://radicle.xyz [rhodecode]: https://rhodecode.com [salsa]: https://salsa.debian.org [savannah]: https://savannah.gnu.org [sourceforge]: https://sourceforge.net [sourcehut]: https://sr.ht [tangled]: https://tangled.org [tuxfamily]: https://www.tuxfamily.org [sidebar-menu]: demo/sidebar-menu.png [context-menu]: demo/context-menu.png [pc]: https://packagecontrol.io [unittesting]: https://packagecontrol.io/packages/UnitTesting [twitter]: https://twitter.com/ryanscherf