alias bashrc para no confundir git y mercurial

Escenario: prefiero Mercurial, pero a menudo tengo que lidiar con repositorys de git, así que termino usándolos a diario. Como tal, a menudo escribo:

hg commit -m "message" 

… donde en cambio quiero:

 git commit -am "message" 

…y viceversa.

Me gustaría que mi file bashrc sea lo suficientemente inteligente para que pueda detectar este tipo de confusión comprobando de forma preventiva si el directory en el que estoy tiene un directory ".git" o ".hg" y "corrige" la syntax en conformidad.

Básicamente, creo que lo que estoy buscando es una forma de anular ambos commands a través de una function bash (sé cómo hacerlo) y de alguna manera comprobar si la primera parte del command comienza con "hg ci -m" o "git ci". -am "(esto no lo sé).

No estoy seguro de si los alias / funciones de bashrc se pueden extender a tal nivel de expresividad, pero estoy seguro de que no soy el único que está siendo picado por esta "confusión", así que me pregunto si alguien ya tuvo una solución.

No sé lo suficiente sobre hg para sugerir cómo reescribir los commands, pero aquí hay algunas funciones útiles para usted:

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

Ejemplo de uso:

 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 } 

¿Qué le .hg hacer un script para verificar la existencia de directorys .git o .hg , y luego en su .bashrc simplemente aliasing un command común para ejecutar el script?

Como se trata de elegir uno u otro, tal vez algo parecido a

 #!/bin/bash if [ -d ./.git ] then cmd='git commit -am ' else cmd='hg commit -m ' fi cmd=$cmd+$1 echo $cmd $cmd 

guárdelo como ~/.scripts/commit.sh , y agregue un alias a bashrc

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

Ahora, cuando quiera comprometerse, solo use la commit 'awesome bugfixes' y se repetirá y ejecutará el command adecuado para usted.