5

だから私は問題があります。あなたがそうするはずがないのに、私は凍った宝石とレールをチェックインしました。私はそれが簡単で、とにかくそれほど大したことではないだろうと思いました。後で、私はrailsを更新し、そうすることで、vendor/railsディレクトリ内のすべての.svnファイルを削除しました。私が本当にすべきことは、ベンダーディレクトリへのsvn:externalsと関係があると聞いています。私は正確に何をする必要がありますか、そしてcapistranoは私のレポにない場合でも私の冷凍宝石を使用しますか?凍結されたgemを使用しない場合、これらの.svnファイルを正しく再生成するにはどうすればよいですか。これ再び発生するためです。

ありがとう!

4

4 に答える 4

4

個人的には、Pistonを使用してベンダー ディレクトリを管理することに賛成です。

于 2008-09-23T03:55:18.110 に答える
3
  1. .svn削除したディレクトリを復元するには、 svn update. 彼らは戻ってきます。

  2. エクスポートされた宝石をチェックインするだけです。私はディレクトリで使用gem unpack <gemname>し、そこから使用します。vendor/gemssvn addcommit

  3. ピストンを使用して追跡しますvendor/pluginsvendor/railsたとえば、これは私がレールをそこに入れる方法です:

    % piston import http://dev.rubyonrails.org/svn/rails/tags/rel_2-0-2/ vendor/rails

ピストンの使用を得るためにgem install piston

Railsは引き続きgitを使用し、subversionリポジトリを更新しない可能性があるため、ピストンを置き換える別の/より良い解決策を見つける必要があることに注意してください。

于 2008-09-23T18:42:09.413 に答える
2

2 つの理由から、svn:externals に反対するようアドバイスする必要があります

  1. これらのsvnサービスに到達できない環境にデプロイしている可能性があります

  2. 展開したいときに外部の svn がダウンしているとどうなりますか?

私のアドバイスは、ピストンまたは宝石のアンパックを使用し、ベンダー ツリーで製品の依存関係を管理することです。

于 2008-09-23T11:00:43.640 に答える
1

免責事項:Ruby / Railsを知らないので、フリーズされたgemが何であるかはわかりません(コンパイルされたバイナリまたはトークン化されたソースだと思いますが)が、Subversionはよく知っています。

.svnディレクトリはSubversionの「簿記」のみを保持します。そこには回復不可能なものは何もありません。

.svnファイルの削除はまったく問題ありません。.svnディレクトリが欠落しているディレクトリがSubversionワーキングコピー(チェックアウトしたディレクトリ)のディレクトリツリー内のどこかにある場合は、それらのディレクトリを削除し、svnを更新するだけで、再作成されます。

ツリー全体に.svnファイルがない場合は、ツリー全体を削除して、svnチェックアウトを再度実行します。

svn:externalsは「シンボリックリンク」のようなものです。プロジェクトAとプロジェクトAを使用するプロジェクトBがあります。プロジェクトAのライブラリディレクトリを参照するsvn:externalプロパティを追加することで、プロジェクトBをチェックアウトするたびに、プロジェクトAからライブラリディレクトリが自動的に配置されます。初期化。たとえば、subversionの他のプロジェクトへのevn:external参照など、他の場所からのライブラリの外部を保持する「thirdparty」というディレクトリがよくあります。

このようなバージョンの問題を解決するための1つのヒントは、ライブラリ(またはフリーズされたgem)に個別のリリースディレクトリを用意し、それらを必要とするプロジェクトで、適切なリリースディレクトリへのsvn:external参照を使用することです。新しいリリースがリリースされたら、svn:externalプロパティを変更して、新しいリリースディレクトリとsvnアップデートを指すようにします。

于 2008-09-23T05:14:54.360 に答える