Prints the forge URL for a given file of a Git repository checkout
Project description
git-uff
Prints the forge URL for a given file of a Git repository checkout.
Intro
Have you ever been discussing with colleagues over IRC/Slack/Matrix/whatever about source code and found yourself needing to point them to a particular file in a git repository?
This is tedious to do.
One solution is to tell them the path in their checkout, hoping they are on the same branch as you.
Another solution is to point your browser to the forge hosting your git repository, select the right branch, navigate the file hierarchy, find your file and copy the file URL.
A better (in my opinion 😉) solution is to use git-uff. This tool adds an uff (short for "URL for file") git sub-command, which takes the path to a file in your repository checkout and prints the matching forge URL.
For example to print the URL of the src/linux/nanonote.desktop file from my Nanonote project:
$ git uff src/linux/nanonote.desktop
https://github.com/agateau/nanonote/blob/master/src/linux/nanonote.desktop
You can also point them to a specific line with the -l argument:
$ git uff src/linux/nanonote.desktop -l 10
https://github.com/agateau/nanonote/blob/master/src/linux/nanonote.desktop#L10
git-uff has a few other available options. Here is its --help output:
usage: git-uff [-h] [-b BRANCH] [-p] [-c] [-l LINE] path
Prints the forge URL for a given file or path of a Git repository checkout.
positional arguments:
path File for which we want the URL
optional arguments:
-h, --help show this help message and exit
-b BRANCH, --branch BRANCH
Use branch BRANCH instead of the current one
-p, --permalink Replace the branch in the URL with the commit it
points to
-c, --copy Copy the result to the clipboard
-l LINE, --line LINE Line to point to
New forges can be declared in git configuration. You can do so using
`git config`, like this:
git config --global uff.<forge_base_url>.forge <forge>
Where <forge> must be one of: cgit, github, gitlab, sourcehut.
For example to declare that example.com uses GitLab:
git config --global uff.example.com.forge gitlab
What if my code is not on GitHub?
git-uff is not tied to GitHub. It supports GitLab, SourceHut and CGit forges.
To declare a new forge, add it to your git configuration with:
git config --global uff.<forge_base_url>.forge <forge>
For example to declare that example.com uses GitLab:
git config --global uff.example.com.forge gitlab
See the output of git uff --help for the valid <forge> values.
Installation
The recommended method to install git-uff is to use pipx:
pipx install git-uff
or uv:
uv tool install git-uff
License
Apache 2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git_uff-0.5.0.tar.gz.
File metadata
- Download URL: git_uff-0.5.0.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d487a9e96cd646fd9a1f61d019ed2ea0b10d386ea0d44830cd04cdd1398ceb6
|
|
| MD5 |
270654f2a6c54b990f6e1a4090acdcbf
|
|
| BLAKE2b-256 |
0a97bab83942b9b0968543b8946a78b0180e9239cdca6ff6fc1bd1f227121cd6
|
File details
Details for the file git_uff-0.5.0-py3-none-any.whl.
File metadata
- Download URL: git_uff-0.5.0-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d17ff30078f37cfa1d4afc695caaeb948f523227cb763a9949da5c024af5af8
|
|
| MD5 |
cb2d7b4772b81b1f3aafc857b50161f9
|
|
| BLAKE2b-256 |
9da260af9b702f838f3915a1cbe8fcdc93c3cbae2c3b0ec47064f0d11f7e62d6
|