/bin /usr/bin に間違った Subversion バイナリがあります

/bin /usr/bin に間違った Subversion バイナリがあります

私は Mac で作業しており、最近 Xcode を更新しました。この更新では、subversion 1.9.xコア インストールとして最新バージョンがインストールされます。これは問題ありませんが、職場で使用している1.8.xこの新しいバージョンは互換性がありません。

理想的には、コアのサブバージョンを 1.8.x に戻したいのですが、どのように進めればよいかよくわかりません。これまでに行ったことは、パッケージ マネージャー (Homebrew) を使用して正しいバージョンを にインストールすることです/usr/local/opt/subversion

私の IDE では、./bin フォルダーを指定できるので、これで問題ありません。ただし、ターミナルで作業したい場合 (頻繁に行う)、バージョンは 1.9.x です。

./bash_profile回避策として、次のように エイリアスを作成しました。alias svn=/usr/local/opt/[email protected]/bin/svn

ターミナルを開いて実行すると、svn --version次のようになります。

svn, version 1.8.16 (r1740329) compiled Apr 2 2017, 22:11:27 on x86_64-apple-darwin15.6.0

これは完璧ですが、何かが欠けているように感じます。そこには時々使用する他のバイナリがあり、それらすべてにエイリアスを付けるのは嫌です。もっと良い方法があるはずですが、ルート レベルで物事を移動することにあまり自信がありません。

Subversion の作業バージョンを再割り当てすることは可能ですか。 おそらく次のようなものでしょうuse svn --path ....

答え1

編集中に$PATH環境変数を追加することは、使用したいバイナリの優先順位を設定するためのオプションです。これは必ずしも必要なわけではありません。

svn up不一致なサブバージョンを含む作業コピーでターミナルから実行すると、次のメッセージが表示されます。

svn: E155036: Please see the 'svn upgrade' command

過去にコマンドを盲目的に実行した経験から不安を感じていましたが、同僚のマシンをいくつか調査した結果、非互換性は VCS サーバーではなく作業コピーにあることが明らかになりました。

不一致を解決するには、 を実行するだけですsvn upgrade。その後は を実行できsvn up、問題なく更新が続行されるはずです。

他の方法がすべて失敗した場合でも、環境変数svnで Subversion フォルダーへのパスを設定することで、特定のバージョンのバイナリを強制的に使用できます$PATH

例えばexport PATH=/usr/local/opt/[email protected]/bin:/usr/bin:/bin:$PATH

これまで時間をかけて理解していなかったのは、$PATHコマンドラインからアクセスできるようにしたいバイナリの場所が含まれていることです。選択したバイナリが文字列の先頭に近いほど、選択される順序が決まります。

フォルダーが使用できなくなった場合は、次の場所にカスケードされる必要があると思います。

関連情報