質問

CWDに含まれるVCリポジトリの種類に応じてエイリアスを動的に定義するシェルをセットアップしました。たとえば、「d」は「svn diff」または「git diff」を実行します。 (このブログ投稿に基づく、誰かが興味を持っている場合...)

Gitリポジトリとgit-svnリポジトリのどちらにいるかに応じて、いくつかのエイリアスを別々に定義したいと思います。 2つの違いを簡単に伝える方法はありますか?

役に立ちましたか?

解決

どのリポジトリがgit-svnリポジトリであるかを正確に決定する際には、少し注意が必要です。リポジトリには複数のsvnリポジトリが含まれる場合があります。

Kafkaのソリューションは、svnリポジトリが-sまたは--std-layoutオプションを使用してクローン化された場合にのみ機能します。実際にはブランチ 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のアプローチは簡単でわかりやすいと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top