CWD に含まれる VC リポジトリの種類に応じてエイリアスを動的に定義するシェルのセットアップをいくつか用意しました。たとえば、「d」は「svn diff」または「git diff」を実行します。(このブログ投稿に基づいて、誰かが興味を持っている場合...)
git リポジトリと git-svn リポジトリのどちらにいるかによって、いくつかのエイリアスを異なる方法で定義したいと思います。両者の違いを簡単に見分ける方法はありますか?
どのリポジトリが正確に git-svn リポジトリであるかを判断するときは、少し注意する必要があります。リポジトリには、複数の svn リポジトリが含まれる場合があります。
Kafka のソリューションは、svn リポジトリが -s または --std-layout オプションを使用して複製された場合にのみ機能し、そこには実際にはbranchがありtrunk
ます。
Codelogic の回答は、呼び出された svn リポジトリがある場合にのみ機能svn
します。それが正しいという要件はありません。
構成に svn-remote があるかどうかを確認する最も簡単な方法は次のとおりです。
$ git config --get-regexp ^svn-remote
これにより、名前が何であれ、構成された git-svn リポジトリが見つかります。一致する場合はステータス 0 で終了し、一致しない場合はステータス 1 で終了します。
しかし、これは svn リポジトリが実際に使用されているという意味ではありません。また、誰かが svn リポジトリをインポートしたが、それをサブモジュールまたはサブツリー マージとして使用している、またはまったく使用していない可能性もあります。git-svn リポジトリのメタデータがオンになっている場合、次のようなものを使用して、現在の HEAD で使用されている svn リビジョンがあるかどうかを確認できます。
$ git rev-list -1 --grep='git-svn-id' HEAD
しかし、それは少し複雑すぎるかもしれません。あなたが決める。
おそらく、git config
コマンドの出力を使用して、git リポジトリと git-svn リポジトリを区別できます。
git config --get svn-remote.svn.url
同期されている svn URL がある場合は、それを返す必要があります。
trunkと呼ばれるブランチとtrunk@[REV]と呼ばれるブランチもあります。ただし、codelogicsのアプローチはより簡単でクリーンだと思います。