サーチ…


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に、 trunkbranches 、および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にインポートするには、以下のメソッドを使用できます:

  1. 高速エクスポートの使用:
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
  1. Hg-Gitの使用:非常に詳細な答えはhttps://stackoverflow.com/a/31827990/5283213です

  2. 使い方のGitHubの輸入を :で(詳細)の指示に従ってくださいGitHubの



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow