2017-06-01 6 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/||') 

と現在のHG支店:

set hg_branch (hg branch) 

そして、単にtruthyである1つのチェック、およびそこから進む:

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 agnostであるVCSコマンドの全スイートを作成する場合はicは、すべての同等のコマンドを翻訳し、引数をマップするためにはもっと多くの作業が必要です。

これは、基本的なシステムの実際の動作を不明瞭にしています。デベロッパーに表示するレポのタイプを表示するか、hg-gitのような実際の互換性レイヤーを使用する方が良いでしょう。

0

あなたの関数は、git rev-parse --show-toplevelとそれに対応するMercurialを使用して、GitまたはHGフォルダ内にあるかどうかをチェックできます。結果に応じて、実行するものを決めることができます。

関連する問題