1

ユーザーが自分の脚本を書くことができるサイトがあります。

この脚本はリビジョンの形で保存されます。

Apache SVN がインストールされました。

すべてのユーザーのドキュメントについて、最新の 5 つのリビジョンのみを保存したいと考えています。

しかし、問題はバックエンドにあり、すべてのリビジョンが「Docsrepo」という 1 つのフォルダーに保存され、1 つのフォルダーに 1000 リビジョンとして分類されます。このように234個のフォルダがあります。

234*1000 リビジョンを意味します。

ここで、このリビジョンをすべてアーカイブして、各ドキュメントの最後の 5 つのリビジョンのみを保持したいと考えています。

それ、どうやったら出来るの?

4

2 に答える 2

0

フォルダーを見ると、各リビジョンが個別のファイルとして保存されているため、サイズを確認できます。これらの各ファイルには、実際にはチェックイン間の差分または差分が格納されているため、非常に小さいはずです。

SVN の新しいバージョンでは、1 つのフォルダー内のすべてのファイルを 1 つの大きなファイルに結合する 'svnadmin pack' コマンドを実行できます。これにより、OS が 1 つのファイルをより適切にキャッシュできるようになるため、パフォーマンスが向上します。ただし、安全に実行でき、好きなだけ実行できます (チェックインごとに実行する人もいれば、毎週または毎月実行する人もいます)。

ここで、各ファイルには以前のリビジョンとの違いだけが含まれていることを既に確認したため、古いファイルを削除することはできません。そのため、古いファイルを削除すると、SVN はファイル全体を再作成できなくなります。時間の経過に伴うすべての変化に基づいています。

これには少し複雑な点があります。SVN はskip-deltasと呼ばれるものを使用します。これは、以前のすべての相違点のロールアップを格納する「チェックポイント」であり、パフォーマンスが大幅に向上します。ただし、これは、各ファイルを再作成できることがわかっていない限り、古いファイルを削除するだけでよいという意味ではありません (各ファイルで実際に何回チェックインが行われたかはわかりません)。


だから..あなたの質問に答えるために:

古いファイルを無視して、リポジトリをダンプしてロードできます。これには、svnadmin dump および svnadmin load コマンドが含まれます。最後の 5 つのリビジョン番号のみを使用してリポジトリをダンプファイルにダンプし、そのダンプファイルを新しいリポジトリにロードします。(日付に基づいてダンプするオプションもあると思います)。

各ファイルの最新の 5 つのリビジョンを保持できないことに注意してください。リビジョンの範囲のみをダンプできます。

明らかに、これは手動の管理者タスクであり、通常、誰も二度と見ることのない古いリビジョンを削除するために使用されます。「最後の 5 つのリビジョンのみを保持する」という自動オプションはありません。リビジョンを削除する必要はほとんどありませんが、SVN はパフォーマンスを高速に維持するのに非常に優れており、デルタが小さいため、履歴を削除する必要はありません。本当にディスク容量が不足している場合は、ダンプ/ロード オプションが最善の策です。

于 2012-04-08T00:56:17.537 に答える