サーチ…
Atlassian変換ユーティリティを使用してSVNからGitに移行する
ここで Atlassian変換ユーティリティをダウンロードしてください 。このユーティリティにはJavaが必要です。変換を行うマシンにJava Runtime Environment JREがインストールされていることを確認してください。
java -jar svn-migration-scripts.jar verify
コマンドを使用して、変換を完了するために必要なプログラムがマシンにないかjava -jar svn-migration-scripts.jar verify
を確認します。具体的には、このコマンドはGit、Subversion、およびgit-svn
ユーティリティをチェックします。また、大文字小文字を区別するファイルシステム上で移行を実行していることも確認します。 Gitへの移行は、リポジトリの破損を避けるため、大文字小文字を区別するファイルシステム上で行う必要があります。
次に、作成者ファイルを生成する必要があります。 Subversionはコミッターのユーザー名だけで変更を追跡します。しかし、Gitはユーザを区別するために2つの情報、すなわち実名と電子メールアドレスを使用します。次のコマンドは、Subversionユーザー名をGitに相当するものにマッピングするテキストファイルを生成します。
java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt
ここで<svn-repo>
は変換したいSubversionリポジトリのURLです。このコマンドを実行すると、投稿者の識別情報がauthors.txt
にマップされます。電子メールアドレスは<username>@mycompany.com
形式になります。 authorsファイルでは、各ユーザーのデフォルト名(デフォルトではユーザー名になっています)を実際の名前に手動で変更する必要があります。続行する前に、すべての電子メールアドレスの正しさを確認してください。
次のコマンドは、svn repoをGitとしてクローンします:
git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>
ここで、 <svn-repo>
は上記で使用したものと同じリポジトリURLで、 <git-repo-name>
はリポジトリを複製するカレントディレクトリ内のフォルダ名です。このコマンドを使用する前に、いくつかの考慮事項があります。
- 上の
--stdlayout
フラグは、Gitに、trunk
、branches
、およびtags
フォルダを持つ標準レイアウトを使用していることを伝えます。非標準レイアウトのSubversionリポジトリでは、trunk
フォルダ、任意の/すべてのbranch
フォルダ、およびtags
フォルダの場所を指定する必要があります。git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name>
。 - このコマンドは、レポのサイズに応じて完了するまでに数時間かかることがあります。
- 大規模リポジトリの変換時間を短縮するために、変換はネットワークオーバーヘッドをなくすためにSubversionリポジトリをホストするサーバ上で直接実行できます。
git svn clone
は、Subversionタグ( tags/
が前に付いたリモートブランチ)を含むリモートブランチとしてSubversionブランチ(およびトランク)をインポートしtags/
。これらを実際のブランチとタグに変換するには、Linuxマシンで以下のコマンドをそれらの順に実行します。それらを実行した後、 git branch -a
は正しいブランチ名を表示し、 git tag -l
はリポジトリタグを表示します。
git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag $tagname origin/tags/$tagname; git branch -r -d origin/tags/$tagname; done
git for-each-ref refs/remotes | cut -d / -f 4- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/origin/$branchname"; git branch -r -d "origin/$branchname"; done
svnからGitへの変換が完了しました!ローカルリポジトリをサーバにpush
するだけで、Gitを使って貢献し続けることができ、svnから完全に保存されたバージョン履歴を持つこともできます。
サブギット
SubGitは、SVNリポジトリをgitに一度だけインポートするために使用できます。
$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git
svn2gitを使ってSVNからGitに移行する
svn2gitは、SubversionからGitにプロジェクトを移行し、履歴(トランク、タグ、ブランチ履歴を含む)を保持するのに役立つ、 git-svnによるgitのネイティブSVNサポートに関するRubyラッパーです。
例
標準レイアウト(つまり、リポジトリのルートレベルにあるブランチ、タグ、トランク)でsvnリポジトリを移行するには:
$ svn2git http://svn.example.com/path/to/repo
標準レイアウトにないsvnリポジトリを移行するには:
$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir
ブランチ、タグ、またはトランクを移行しない(または持っていない)場合は、オプション--notrunk
、-- --nobranches
、および--notags
使用できます。
たとえば、 $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches
はトランク履歴のみを移行します。
新しいリポジトリに必要なスペースを減らすために、追加したディレクトリやファイルを除外することができます(ビルドディレクトリやアーカイブなど)。
$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'
移行後の最適化
新しく作成したgitリポジトリにすでに数千(またはそれ以上)のコミットがある場合は、リモートでリポジトリをプッシュする前に、使用する領域を減らすことができます。これは、次のコマンドを使用して実行できます。
$ git gc --aggressive
注:前のコマンドは、大きなリポジトリ(コミット数万、および/または数百MBの履歴)で最大数時間かかる場合があります。
Team Foundation Version Control(TFVC)からGitに移行する
Git-TFというオープンソースツールを使用して、チームファンデーションのバージョン管理からgitに移行することができます。移行では、tfsチェックインをgitコミットに変換することで、既存の履歴を転送します。
Git-TFを使ってソリューションをGitに入れるには、以下の手順に従います。
Git-TFをダウンロード
Codeplex: Git-TF @ CodeplexからGit-TFをダウンロード(およびインストール)することができます。
TFVCソリューションのクローン作成
powershellを起動し(win)、コマンドを入力します。
git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep
--deepスイッチは、Git-Tfにあなたのチェックイン履歴をコピーするよう指示するので、注意すべきkeeywordです。 cloeコマンドを呼び出したフォルダに、ローカルのgitリポジトリがあります。
掃除
- .gitignoreファイルを追加します。 Visual Studioを使用している場合は、エディタがこれを行うことができます。そうでなければ、 github / gitignoreから完全なファイルをダウンロードすることで手動で行うことができます。
- ソリューションからTFSソース管理バインディングを削除します(すべての* .vsssccファイルを削除します)。 GlobalSection(TeamFoundationVersionControl)を削除して、ソリューションファイルを変更することもできます。...... EndClobalSection
コミット&プッシュ
ローカルリポジトリをコミットしてリモートにプッシュすることで、変換を完了します。
git add .
git commit -a -m "Coverted solution source control from TFVC to Git"
git remote add origin https://my.remote/project/repo.git
git push origin master
MercurialからGitへの移行
Mercurial
RepoをGit
にインポートするには、以下のメソッドを使用できます:
- 高速エクスポートの使用:
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD
Hg-Gitの使用:非常に詳細な答えはhttps://stackoverflow.com/a/31827990/5283213です。
使い方のGitHubの輸入を :で(詳細)の指示に従ってくださいGitHubの 。