私はJava互いに接続された20のモジュールを持つレガシープロジェクトに取り組んでいます。したがって、各モジュールには独自のブランチとタグがあります。構造は次のようになります。
/projects
.svn
- module1
.svn
-trunk
-branch
-tag
- module2
.svn
-trunk
-branch
-tag
プロジェクトフォルダーは約30 GBで、使用することはほぼ不可能ですgit-svn clone
すべてのモジュールをチェックアウトしますが、これはすべてのブランチとタグをカウントするためです。
プロジェクトのトランクのみを複製して、ローカルでコミットを開始することは可能ですか?
編集:質問を読み違えて、あなたが実際に尋ねたものではなく、あなたが尋ねていると思ったものに答えました。
単一のSubversionディレクトリを複製するのは簡単で、実際にはどのディレクトリを複製してもかまいません。 「レイアウト」引数を指定せずに、トランクへのパスを直接指定します。
git svn clone http://path.to.svn.repo/module1/trunk
「通常の」git svn clone
は次のようになります。
git svn clone --stdlayout http://path.to.svn.repo/
したがって、代わりに使用するものは次のようになります。
git svn clone --stdlayout http://path.to.svn.repo/module1/
これにより、module1
フォルダーのtrunk
、branch
およびtag
サブフォルダーが検出され、それらのクローンが作成されます。
--stdlayoutを使用してgit svn cloneを実行しても、適切な結果が得られませんでした。
同じ状況で、この戦略はうまくいきました。
git svn init --trunk $ repo/projects/module1/trunk --tags $ repo/projects/module1/tag --branches $ repo/projects/module1/branch git svn fetch
@me_andの回答に基づいてさらに情報を追加したかっただけです。
トランクのみのクローンを作成するコマンドは機能しますが、gitフォルダーに作成される構造は次のとおりです。
refs
|--remotes
|--git-svn
refs/remotes/git-svnと同等です。
代わりにこれを行う場合:
git svn clone https://domain/svn/repo/trunk --no-metadata --authors-file=authors.txt --trunk=https://domain/svn/repo/trunk
作成される構造は次のとおりです。
refs
|--remotes
|--Origin
|--trunk
refs/remotes/Origin/trunkと同等です
2番目の構造はよりgitフレンドリーに見えるため、作成する必要があるコマンドとシェルスクリプトを削減できる可能性があります:)
P.S。 [--no-metadata]および[--author-file]引数はオプションです。