2

コミット履歴を持つ非常に巨大な SVN トランクを Git に移行する必要があります。SVN リポジトリの構造は次のとおりです。

branches/
    project1-branch1
    project1-branch2
    project2-branch1
    project2-branch2
tags/
    project1-1.0
    project1-1.1
trunk/
    project1/
    project2/
    project3/
    project4/

トランク内の各プロジェクトを対応する Git リポジトリに移動することにのみ本当に関心があります。タグやブランチはあまり気にしません。間違っている場合は訂正してください。ただし、Git は非常に大きなリポジトリではうまく機能しないと思います。

過去にも同様の質問がありましたが、それらはかなり古いものであり、この問題に取り組む上で誰かが新しい視点を持っているかどうかを知りたいだけです. SubGit などのツールをいくつか試しましたが、すべてのプロジェクトが独自のフォルダーにあり、トランク、ブランチ、およびタグの階層があると想定しています。トランクフォルダーを明示的に指定し、タグとブランチを空のフォルダーに向けようとすると、SubGit はしばらくすると応答を停止します。

4

2 に答える 2

2

バージョン3.0以降、SubGit は単一のディレクトリで動作します (以前のバージョンでは、作成したようにトランク、ブランチ、およびタグが必要でした)。それを行うには、実行できます

$ subgit configure --svn-url <URL>/trunk/project1 --layout directory repo1.git
# adjust repo1.git/subgit/config configuration
$ subgit install repo1.git

リポジトリがベスト プラクティスに従っておらず、svn:eol-style設定されていないファイルが多数ある場合は、追加したほうがよいでしょう。

[translate]
  eols=false

上記の「調整」ステップで repo1.git/subgit/config ファイルの最後にオプションを追加します。これにより、EOL の翻訳がオフになります。

SubGit が進行していないように見える場合、あなたが言ったように巨大なトランクをチェックアウトすることがあります。~/.subgit/logs/ ファイルのいくつかに書き込むので、そこを見ることで進行状況を追跡できます。最初のリビジョンを取得した後、進行状況を明示的に表示します。

免責事項: 私は SubGit 開発者の 1 人です。

于 2015-08-10T15:57:36.887 に答える
1

このような簡単なタスクについては、次のことができます

  1. Git-svn ドキュメントを読む
  2. 基本的な例のセクションでケース (単一の URL を追跡) を参照してください
  3. git svn clone URL/trunk/project*トランク内のすべてのプロジェクトに使用してみてください
于 2015-08-10T17:12:54.430 に答える