subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
それがすべてです。
+ SVNから更新するには、最初のコマンドで作成されたGitリポジトリ。
subgit import directory/path/Local.git.Repo
私は巨大なリポジトリのためにGitに即座に移行する方法を使用しました。
もちろん準備が必要です。
しかし、開発プロセスをまったく止めることはできません。
これが私のやり方です。
私の解決策は次のようになります:
- SVNをGitリポジトリに移行する
- チームがに切り替える直前にGitリポジトリを更新します。
大きなSVNリポジトリの場合、移行には多くの時間がかかります。
しかし、完了した移行の更新はわずか数秒です。
もちろん、私はSubGit、ママを使用しています。git-svnを使用すると、ブルースクリーンが表示されます。絶えず。そして、git-svnはGitの「ファイル名が長すぎます」という致命的なエラーで退屈です。
手順
1. SubGitをダウンロードする
2.移行および更新コマンドを準備します。
Windowsでそれを行うとしましょう(Linuxに移植するのは簡単です)。
SubGitのインストールbinディレクトリ(subgit-2.XX \ bin)で、2つの.batファイルを作成します。
移行用のファイル/コマンドの内容:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
"start"コマンドはここではオプションです(Windows)。起動時にエラーを確認し、SubGitの完了後にシェルを開いたままにすることができます。
ここにgit-svnのような追加のパラメーターを追加できます。--default-domain myCompanyDomain.comのみを使用して、SVN作成者のメールアドレスのドメインを修正しています。
標準のSVNリポジトリの構造(トランク/ブランチ/タグ)があり、「作成者のマッピング」に問題はありませんでした。だから私はもう何もしていません。
(ブランチなどのタグを移行する場合、またはSVNに複数のブランチ/タグフォルダーがある場合は、より詳細なSubGit アプローチの使用を検討してください)
ヒント1:--minimal-revision YourSvnRevNumberを使用して、問題がどのように発生するかをすばやく確認します(ある種のデバッグ)。特に役立つのは、解決された作成者名または電子メールを表示することです。
または、移行履歴の深さを制限します。
ヒント2:次の更新コマンド/ファイルを実行すると、移行が中断され(Ctrl+ C)、復元される場合があります。
大きなリポジトリに対してこれを行うことはお勧めしません。「メモリ不足Java + Windows例外」を受け取りました。
ヒント3:結果のベアリポジトリのコピーを作成することをお勧めします。
更新するファイル/コマンドの内容:
start subgit import directory/path/Local.git.Repo
Gitリポジトリへの最後のチームのコミットを取得したい場合は、何度でも実行できます。
警告!ベアリポジトリ(ブランチの作成など)には触れないでください。
次の致命的なエラーが発生します。
回復不可能なエラー:同期しておらず、同期できません... SubversionリビジョンをGitコミットに変換しています...
3。最初のコマンド/ファイルを実行します。大きなリポジトリを作成するには、かなり時間がかかります。私のささやかなリポジトリのために30時間。
それがすべてです。
2番目のファイル/コマンドを実行することで、いつでもSVNからGitリポジトリをいつでも更新できます。そして、開発チームをGitに切り替える前。
ほんの数秒で終わります。
もう1つ便利なタスクがあります。
ローカルGitリポジトリをリモートGitリポジトリにプッシュする
それはあなたのケースですか?先に進みましょう。
- リモコンを設定する
実行:
$ git remote add origin url://your/repo.git
- 巨大なローカルGitリポジトリをリモートリポジトリに最初に送信する準備をする
デフォルトでは、Gitは大きなチャンクを送信できません。
致命的:リモートエンドが突然ハングアップした
実行してみましょう:
git config --global http.postBuffer 1073741824
524288000-500 MB 1073741824-1 GBなど
ローカル証明書の問題を修正します。git-serverが壊れた証明書を使用している場合。
証明書を無効にしました。
また、Gitサーバーには、修正が必要なリクエスト量の制限がある場合があります。
- すべての移行をチームのリモートGitリポジトリにプッシュします。
ローカルGitで実行します。
git push origin --mirror
(古いGitバージョンのgit push origin '*:*')
次のエラーが発生した場合:エラー:gitを生成できません:そのようなファイルまたはディレクトリはありません ...私にとって、リポジトリを完全に再作成すると、このエラー(30時間)が解決します。次のコマンドを試すことができます
git push origin --all
git push origin --tags
または、Gitを再インストールしてみてください(私には役に立たない)。または、すべてのタグからブランチを作成してプッシュすることもできます。または、または、または...