SubGit (対死のブルー スクリーン)
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で Blue Screen of Death になります。ただ絶えず。そして、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 push origin '*:*'古い Git バージョンの場合)
次のエラーが発生した場合:エラー: git を生成できません: そのようなファイルやディレクトリはありません... 私にとっては、リポジトリを完全に再作成することでこのエラーが解決されます (30 時間)。次のコマンドを試すことができます
git push origin --all
git push origin --tags
または、Git を再インストールしてみてください(私には役に立ちません)。または、すべてのタグからブランチを作成してプッシュすることもできます。または、または、または...