10

Linuxシステムにディレクトリがあり、ほとんどの場合、別のファイルシステム上のファイルへのシンボリックリンクが含まれています。ディレクトリをSubversionリポジトリに追加し、プロセスでシンボリックリンクを逆参照します(リンクではなく、シンボリックリンクを指すファイルとして扱います)。一般的に、この動作で作業コピー操作を処理できるようにしたいのですが、「svnadd」コマンドが開始点だと思います。

SVNクライアントユーティリティには、作業コピーでのシンボリックリンクの逆参照に関連するオプションがないようです。マニュアル( http://svnbook.red-bean.com/en/1.5/index.html)にもこれへの参照は見つかりませんでした。

SVNユーザーのメーリングリストで、同じ質問をしたが回答を受け取らなかったポスターを見つけました。

(そのポスターは、シンボリックリンクの代わりにハードリンクを使用することになりました。私の場合、実際の基になるファイルは別のファイルシステムにあるため、この手法はオプションではありません。)

Fedora11でSubversionv1.6.1を使用しています。

その価値については、この動作を概算するのに役立つ代替のツール/手法があることを知っていますが、さまざまな理由で破棄する必要があります。私はすでにこれらの可能性を検討しました[そしてダストビン]:-「ユニオン」マウント。実際のファイルを含むすべてのディレクトリをマージし、SVN作業コピーディレクトリをユニオンの「最上位」レイヤーとして使用します。-実際のファイルをSVN作業コピーと同じファイルシステムにコピー/移動し、シンボリックリンクの代わりにハードリンクを使用します。-非SVNバージョン管理システム。これらはすべて素晴らしいアイデアであり、他の問題に対する優れた解決策であると確信していますが、この環境と状況の制約を考えると機能しません。

4

5 に答える 5

1

多くの制約がありますが、常に機能することが1つあります。それは、ソースをハックすることです。

Linux用の独自のsvnを簡単に構築できますが、このmodを作成するのは「簡単」な場合とそうでない場合があります。とにかく、管理されたシンボリックリンクがない場合は、大まかなハックを作成して、ハードリンクであるかのようにsvnに常にフォローさせることができます。

リポジトリにバージョン管理されたリンクが含まれていて、その一部をチェックアウトする必要がある場合は、ファイルごと、階層ごとなどに機能を制御するプロパティを使用する、より高度なハックが必要になります。

もう1つの選択肢があります。バージョン管理されたリンクは、1.1.0に登場しました。それ以前の動作がシンボリックリンクをたどることであった場合、おそらく古いクラ​​イアントを実行するだけで済みます。

于 2009-09-04T18:47:01.857 に答える
0

シンボリックリンクの代わりに物理リンクを使用することもできます。

于 2010-09-21T12:09:42.557 に答える
0

アイデア:svnがシンボリックリンクを認識しないようにstat / open/unlinkなどをインターセプトするLD_PRELOADを使用して共有ライブラリを注入します。これにより、svnソースを変更する必要がなくなります。

于 2010-03-28T18:05:04.470 に答える
0

私の知る限り、現在のSubversionバージョン(1.6.x)では、それを行う方法はありません。同じファイルシステム上のファイル(ディレクトリではない)の場合は、ハードリンクを使用できます(-sスイッチインlnコマンドなし)。

于 2010-09-22T15:05:41.763 に答える
0

私も同様の課題に直面しました。~/scripts私のホームディレクトリには、さまざまなサブディレクトリに散在する多くのスクリプトが含まれています。しかし、コード例を探している同僚に利益をもたらすために、SVNのよりクリーンなレイアウトが必要でした。

下にサブディレクトリがある~/scripts/svn/signal15/code/ディレクトリを作成し、他の場所に散在しているすべてのスクリプトをハードリンクしました。prodtest

次のコマンドは、必要なディレクトリ/ファイルレイアウトをインポートしました。

cd ~/scripts ; svn import svn http://svn_server/repos/code

リポジトリはhttp://svn_server/repos/code/signal15/、「prod」および「test」サブディレクトリで表示されるようになりました。

私は今、カスタムレイアウトを持っています。a)ホームディレクトリのレイアウトは変更されません(~/scripts/svnサブディレクトリはありません)b)SVNリポジトリには、整理されたスクリプトを含む「signal15」ブランチが含まれています。PS:シェル機能があれば、必要に応じてチェックインやチェックアウトもできます。

于 2013-02-21T00:00:03.567 に答える