履歴付きのSubversionリポジトリの更新
-
08-07-2019 - |
質問
古い、しかし非常に重要なSubversionリポジトリがあります。これについては、通常の構造(トランク、ブランチ、タグ)からは作成していません。したがって、このリポジトリのすべてのファイルはルートに存在します。
新しいフォルダーを作成し、トランク内のすべてのファイルを移動する方法は知っていますが、そうすると、「トランク」は新しいフォルダーであるため、プロジェクトの履歴が3年間失われます。プロジェクトの履歴全体をルートからトランクフォルダに移動する解決策はありますか?
ありがとう!
解決
はい。リポジトリとともに履歴をファイルにダンプするsvnadmin dumpを使用できます。その後、svnadmin loadを使用して、ダンプファイルをtrunkフォルダーにロードできます。それが完了したら、ルートからファイルを削除します。
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
svnadmin load REPOS_PATH
ダンプドキュメント: http://svnbook.red-bean.com/ ja / 1.1 / re31.html ドキュメントの読み込み: http://svnbook.red-bean.com/en/1.0 /re36.html
他のヒント
使用できます
svn copy http://my.server/svn/repos/ http://my.server/svn/repos/trunk/ \
-m "Copied"
リポジトリのルート(^ /)からtrunk /(^ / trunk)へのコピーを作成し、ルートディレクトリを含むすべての履歴を保持します。
その後、次のコミットで古い場所にあるファイルとサブディレクトリを削除できます。
svn mvファイルを使用する場合、履歴を失うことはありません。履歴は保持されます。そのため、svnadmin load -parent-dir trunkを使用してリポジトリをやり直すことができますが、新しいリポジトリに新しいUUIDが必要なので、すべての新しいチェックアウトを行う必要があります。
svn co http://example.com/repos/
cd repos
svn mkdir trunk tags branches
svn mv a trunk/a
svn mv b trunk/b
svn ci -m 'Moving project into trunk'
確かに理想的なソリューションではありませんが、コンテンツが古いリポジトリのすべてのコードであるが、トランクなどに適切にフォーマットされた新しいリポジトリをまったく作成しないでください。古いリポジトリを完全に分離して読み取り専用にします。
これは、項目Xの前に、アイテムの履歴を知る必要がある場合、新しいリポジトリではなく古いリポジトリを調べる必要があることを覚えておく必要があることは確かに苦痛です。