2 个版本 (1 个稳定版)
1.0.0 | 2023年12月20日 |
---|---|
0.1.0 | 2023年12月16日 |
#6 在 #repo
14KB
152 行
Ghl
Github链接器
此程序允许您使用本地仓库中的信息获取各种Github链接。
只想获取您的github仓库链接?只需 ghl
如果您还想在 $BROWSER
中打开它,请添加 --web
/ -w
标志。
为此,您需要在shell中将变量导出到您首选的浏览器中。例如,xdg-open
不用于此,以帮助程序更跨平台。
您可以为您的仓库中的某个文件/目录指定路径。相对路径 (..
) 也可以工作!
在链接中间,您会看到 tree
或 blob
。如果您指向的文件是目录,则是前者,如果不是,则是后者。为了确定这一点,您提供的路径会被解析为实际路径。这包括一些限制
- 路径必须存在。您不能引用已经存在于某个提交中但不再存在的文件。
- 符号链接会被解析为其目标。因此,您将无法创建指向符号链接的链接。
在这些情况下,您必须使用 --connector
/ -c
标志来指定 tree
或 blob
。请注意,此时提供的路径 不会被解析,因此它假定您指定的是相对于仓库根的路径。
默认链接指向默认分支的最新提交,正如您所期望的。但是,您可以使用 --branch
/ -b
标志指定您想要获取链接的不同分支/提交。例如 -b dev
或 -b 18e5a52
。
该标志对输入 字面地,但是这些功能可用
HEAD
表示当前提交(您也可以使用小写head
)。请注意,与默认行为的不同之处在于,它指向您当前所在的提交,而不是未来可能存在的最新可用提交。head^
表示 "当前提交之前的提交"head~6
表示 "当前提交之前的6个提交"dev
表示 "名为dev
的分支的最新提交"。18e5a52
将短提交哈希扩展为完整提交哈希。
要获得这些功能,请使用 --parse
/ -p
标志与 -
标志一起使用。这不是默认设置,因为
- 指定分支名称将解析为其当前最新的提交,而不是最新可用的提交
- 您无法引用本地不存在的分支
如果您的仓库是分叉,默认情况下,您将获得到 您的 仓库(分叉)的链接。更准确地说,从 git remote
列表中的 第一个 远程链接被采用。如果您想建立一个到上游的链接,您可以使用 --remote
/ -
标志(通常会是 -
)。
您是否曾经觉得某些程序在输出后不必要地打印了最后的换行符感到烦恼?不?只有我一个人吗?嗯,您可以使用 --trim
/ -
标志来删除它。
其他远程
虽然这个程序是专门为 Github 制作的,但考虑到这些假设,它也可以在技术上用于其他远程
- 您正在使用 git
- 在链接中的仓库名称之后,如果您是指向目录(或者如果未指定文件路径,则为分支),则为
tree
;如果您不是,则为blob
。 - 在
tree
/blob
之后是分支名称或提交哈希。 - 文件路径在这些之后
用法
An easier way to construct Github links.
Usage: ghl [OPTIONS] [PATH]
Arguments:
[PATH]
Options:
-b, --branch <BRANCH> Make a link to a specific branch / commit.
Branch is not specified by default, which
results in making the link follow the default
branch
-p, --parse Parse `branch` argument with `git rev-parse`.
This allows you to use things like HEAD (or
just head), HEAD^, commit~2; short commit
hashes become long commit hashes, branch names
become their latest commit's hash.
Essentially, everything that happens when you
use `git rev-parse`. This is not the default
because you couldn't specify links to branches
that way, and would only be able to specify
links to a branch's latest commit
-r, --remote <REMOTE> Specify remote name explicitly. By default,
takes the first one from `git remote`. If your
repo is a fork, this will result in a link to
*your* repository, rather than the upstream
one. You can specify `upstream` (usually) to
mean the upstream repository
-t, --trim Trim the final newline of the output link
-w, --web Open the resulting link in your $BROWSER
-c, --connector <WORD> Assume the provided filepath is literal and is
relative to the repo root, and provide the
connector type yourself. `tree` if you're
pointing to a directory, `blob` if not. Useful
when you're trying to point to a symlink,
rather than the file it points to, or if
you're pointing to a file you know is going to
be in the remote but not locally. This is
required when you're specifying a file that no
longer exists, but did in some commit
[possible values: blob, tree]
-h, --help Print help
-V, --version Print version
安装
cargo install ghl
也支持 cargo-binstall
和 cargo-quickinstall
。
卸载
cargo uninstall ghl
依赖关系
~3–12MB
~142K SLoC