Fish shell:每个目录的别名
Fish shell: Alias per directory basis
目前我的团队在各种项目中使用 Git a.w.a Mercurial,所以我在这里定义我自己的 vcs 命令,使不同 projects/directories 之间的通用事物无缝连接(git & 汞)。
如何在 fish shell 中实现这一点?这样别名就可以根据 directory/subdirectory 触发相应的 git 或 hg 命令。
您的函数可以使用 git rev-parse --show-toplevel
和 Mercurial 的相应函数来检查它是否在 Git 或 HG 文件夹中。根据结果,您可以决定执行什么。
您可以通过运行来确定当前的git分支:
set git_branch (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
和当前的 hg 分支:
set hg_branch (hg branch)
然后简单地检查哪一个是真的,然后从那里继续:
if test "$git_branch"
git $argv
else if test "$hg_branch"
hg $argv
else
echo "[X] Not in a VCS directory"
return 1
end
如果您真的想编写一整套 git/hg 不可知的 VCS 命令,则需要做更多的工作来翻译所有等效命令并映射参数等。
虽然这通常不是一个好主意,但您会掩盖底层系统的实际行为。最好只是向开发人员展示您所在的回购类型,或者使用像 hg-git.
这样的真正的兼容层
目前我的团队在各种项目中使用 Git a.w.a Mercurial,所以我在这里定义我自己的 vcs 命令,使不同 projects/directories 之间的通用事物无缝连接(git & 汞)。
如何在 fish shell 中实现这一点?这样别名就可以根据 directory/subdirectory 触发相应的 git 或 hg 命令。
您的函数可以使用 git rev-parse --show-toplevel
和 Mercurial 的相应函数来检查它是否在 Git 或 HG 文件夹中。根据结果,您可以决定执行什么。
您可以通过运行来确定当前的git分支:
set git_branch (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
和当前的 hg 分支:
set hg_branch (hg branch)
然后简单地检查哪一个是真的,然后从那里继续:
if test "$git_branch"
git $argv
else if test "$hg_branch"
hg $argv
else
echo "[X] Not in a VCS directory"
return 1
end
如果您真的想编写一整套 git/hg 不可知的 VCS 命令,则需要做更多的工作来翻译所有等效命令并映射参数等。
虽然这通常不是一个好主意,但您会掩盖底层系统的实际行为。最好只是向开发人员展示您所在的回购类型,或者使用像 hg-git.
这样的真正的兼容层