繁体   English   中英

bashrc别名,不会混淆git和mercurial

[英]bashrc alias for not confusing git and mercurial

场景:我更喜欢Mercurial,但我经常需要处理git存储库,因此我最终每天都使用它们。 因此我经常输入:

hg commit -m "message"

...而我想要的地方:

git commit -am "message"

......反之亦然。

我希望我的bashrc文件足够智能,以便它可以通过先发制人地检查我所在的目录是否具有“.git”或“.hg”目录并“修复”语法来检测这种混淆。根据。

基本上我认为我正在寻找的是通过bash函数覆盖两个命令的方法(我知道该怎么做)并以某种方式检查命令的第一部分是以“hg ci -m”还是“git ci”开头-am“(我不知道)。

我不确定bashrc别名/函数是否可以扩展到这样的表达水平,但我确信我不是唯一被这种“混乱”所困扰的人,所以我想知道是否有人已经提出了解决方案。

我不太了解hg建议如何重写命令,但这里有一些方便的功能:

is_git_repo() { command git rev-parse --git-dir &> /dev/null; }
is_hg_repo() { command hg root &> /dev/null; }

用法示例:

git() { 
  if is_hg_repo
  then
    echo "This is is a hg repo, you silly goose!"
    return 1
  else
    command git "$@"
  fi
}

hg() { 
  if is_git_repo
  then
    echo "Surely you're joking... this is git repo!"
    return 1
  else
    command hg "$@"
  fi
}

如何让脚本检查是否存在.git.hg目录,然后在你的.bashrc使用常用命令别名来运行脚本?

因为这是一个选择一个或另一个的问题,也许是类似的东西

#!/bin/bash

if [ -d ./.git ]
  then
    cmd='git commit -am '
  else
    cmd='hg commit -m '
fi

cmd=$cmd+$1
echo $cmd
$cmd

将其保存为~/.scripts/commit.sh ,并为bashrc添加别名

alias commit='~/.scripts/commit.sh'

现在,当你想提交时,只需使用commit 'awesome bugfixes' ,它就会回显并为你运行正确的命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM