2017-06-01 81 views
-2

目前我的团队使用Git a.w.a Mercurial进行各种项目,所以我在这里定义我自己的vcs命令,以便在不同项目/目录(git & hg)之间实现无缝连接。鱼壳:每个目录的别名

我如何在鱼壳中实现这一目标?所以这个别名可以在每个目录/子目录的基础上触发相应的git或hg命令。

+1

您的问题未指定。使用'$ PWD'变量来决定你是否在git或mercurial项目目录中并且相应地采取行动是微不足道的。坦率地说,我认为你所要做的将会导致比解决问题更多的问题。但是,如果您需要有关鱼脚本语法的帮助,请告诉我们您已经尝试了什么,我们很乐意提供指导。 –

+0

看起来你对所问的内容没有太多的想法,让我知道如果你需要任何特定的部分需要位解释/让它更通知。 – nehemiah

回答

1

您可以通过运行确定当前的Git分支:

set git_branch (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||') 

和当前汞分支:

set hg_branch (hg branch) 

然后简单地检查哪一个是truthy,并从那里继续:

if test "$git_branch" 
    git $argv 
else if test "$hg_branch" 
    hg $argv 
else 
    echo "[X] Not in a VCS directory" 
    return 1 
end 

如果你真的想编写一整套VCS命令,它们是git/hg agnost这需要更多的工作来翻译所有等价的命令并映射参数等。

虽然这通常不是一个好主意,但它掩盖了底层系统的实际行为。最好是向开发人员展示您所使用的回购类型,或者使用像hg-git这样的实际兼容层。

0

你的函数可以使用git rev-parse --show-toplevel和Mercurial的相应函数来检查它是否在Git或HG文件夹中。取决于结果,你可以决定执行什么。