Subversionリポジトリをパーツに分割する

バージョン管理システムについて初めて知ったとき、私はこの開発ツールを絶対に試してみることにしました。 当時、私はそれが何であるかほとんど知りませんでした。 したがって、利用可能なオファーを見て、Subversionを選択しました。
小さなマニュアルを読んだ後、最初のリポジトリを作成することにしました。 そして突然、私は少し考えましたが、複数のプロジェクトがある場合に構造を整理する方法...そして私はプロジェクトに分割されたツリーを作成し、各プロジェクトで誰もがトランク、タグ、ブランチに精通することを自分で決めました。 時間が経つにつれて、プロジェクトの数は増えましたが(それほどではありませんが、それでも)、プロジェクトのリビジョンのエンドツーエンドの番号付けを観察することは何となく悲しくなりました。 つまり プロジェクトログを見ると、最初に649のリビジョンがあり、次に700のリビジョンがあります。プログラマーは意欲的な人たちです。すべてが棚に置かれているとき、彼らはそれを愛しています。

だから、すべてが「風水」に従っているという簡単な指示

いくつかの初期データ:

指示:
  1. リポジトリをダンプする必要があります。 これを行うには、次のコマンドを実行します。
    svnadmin dump /home/user/svn/reps/projects > myrep.dump
  2. プロジェクトを1つだけ残す
    cat myrep.dump | svndumpfilter include Projects/Project1 --drop-empty-revs --renumber-revs > project1.dump

    --drop-empty-revs-空のリビジョンを削除します
    --renumber-revs-リビジョンの番号を付け直します

    プロジェクトへの完全なパスを示す必要があります。 プロジェクト「Project1」の名前だけでなく、「Projects / Project1」。 それ以外の場合、出力は空のダンプファイルを取得します。

    一般に、前の2つのチームは組み合わせることができます
    svnadmin dump /home/user/svn/reps/projects | svndumpfilter include Projects/Project1 --drop-empty-revs --renumber-revs > project1.dump
  3. 「reps」フォルダーにプロジェクトの新しいリポジトリを作成します
    svnadmin create project1
  4. クリアされたダンプを新しいリポジトリにアップロードします
    svnadmin load project1 < project1.dump
    このステップでエラーが発生します
    svnadmin: File not found transaction '0-0', path Projects/Project1 、つまり、Projectsフォルダーが存在しないことを意味します。 復元中に、構造が再作成されていないようです。
    これを修正するには、プロジェクトフォルダーを手動で作成する必要があります。
      svn mkdir http://svn.mysite.ru/project1/Projects -m「プロジェクトフォルダーの作成」 

    そして今、私たちは安全に実行できます:
    svnadmin load project1 < project1.dump
  5. なぜなら 古い構造を繰り返す新しいリポジトリの構造を取得する場合、「Project1」フォルダからリポジトリのルートにすべてを転送し、「Projects」フォルダを削除する必要があります

ここで私は「すべて」を書き、それに終止符を打ちたいと思います。 しかし、それでも、これらの4つのポイントのうち、軟膏にハエがあります。
プロジェクトの作業中に名前を変更した場合、2番目のステップでInvalid copy source path ' 'エラーが発生します。
通常のsvndumpfilterプログラムではこの問題を解決できません。
いくつかの検索の後、この制限を回避することができるpython svndumpfilter2で記述されたスクリプトを見つけました。
スクリプトをコンピューターにダウンロードし、コマンドを入力します
cat myrep.dump | svndumpfilter2 --drop-empty-revs --renumber-revs /home/user/svn/reps/projects Projects/Project1 > project1.dump
svndumpfilterとはいくつかの違いがあります。


さて...すべて。

注:この記事を書き始めたとき(そしてこれは1週間前でした)、Habréで検索しても類似したものは見つかりませんでした。 しかし、以来 私の出版が少し延期されたため、SVNリポジトリを復元する同様の記事が登場しましたが、 そこにはいくつかの問題がカバーされていないように思えるので、記事を公開することにしました。

Source: https://habr.com/ru/post/J73788/


All Articles