SVNチェックアウトを変換してgitを使用する(git-svn)
-
05-07-2019 - |
質問
バージョン管理のためにsvnに保存されているソフトウェアを使用しています。 git(git-svn)を使用したいと思いますが、ソフトウェアを使用するには、多くのセットアップと構成が必要です。 svnを介してすべてのコードをチェックアウトするなど、すべてのセットアップを処理するツールがあります。
git-svnのすべてのドキュメント(見つけることができました)には、git-svnを使用した新しいチェックアウトが必要です。
既存のsvnチェックアウトを変換してgit-svnを使用できるようにする方法はありますか?
解決
次のようなことができます:
- git-svnを使用して、一時ディレクトリにSVNツリーの完全なクローンを作成します。既存のチェックアウトとまったく同じリビジョンを使用してください。
- <!> quot; .git <!> quotを移動します。 git-svnチェックアウトの最上位からSVNチェックアウトの最上位へのフォルダー。
- その後、Gitに<!> quot; .svn <!> quotを無視するよう指示する必要があります。ディレクトリ、またはそれらをすべて削除できます。
- git-svnチェックアウトを削除します。
- ここで、Gitとgit-svnを使用して既存のファイルを操作できます。
- <!> quot; git status <!> quot;そして、変更がないと言うことを願っています。
他のヒント
いいえ。 git-svnクローンは、リポジトリ全体をgitに変換します。 SVNチェックアウトにはリポジトリ全体がないため、クローンを作成できません。これは、SVNまたはCVSから分散システム(gitなど)に切り替える主な利点です。
おそらく、履歴を保持したいと思います。ただし、あなた(またはこのページでつまずいた人)が履歴を必要としない場合は、<!> quot; export <!> quot;を使用できます。ここで説明されている機能: https://stackoverflow.com/a/419475/2437521 。
これを行う別の方法は、元のSubversion作業コピーを変更せず、コピーする必要がないため、パッチを使用することです:
- git-svnを使用して、Gitリポジトリとなる新しいディレクトリにSubversionツリーの完全なクローンを作成します。既存のチェックアウトとまったく同じリビジョンを使用してください。
git reset --hard :/r<revision>
を使用して、複製後に強制的に同じリビジョンにすることができます。ここで、<revision>
はSubversion作業コピーが更新されるリビジョンです(svn info
を使用してこれを参照)。 -
cd
Subversion作業コピーへ。 -
svn status
を使用して、すべての新しいファイルがA
でマークされていることを確認し(またはsvn add
を使用して追加)、削除されたすべてのファイルにD
でマークを付けます(またはsvn rm
を使用して削除します) 。 -
svn diff >patch.diff
を実行してパッチファイルを作成します。 - 以前に作成したGitリポジトリの上部に
patch.diff
をコピーします。 -
git apply -p0 patch.diff
を前に作成したGitリポジトリの先頭に追加します。 -
git status
を実行して、Gitリポジトリの作業ツリーにパッチを適用します。
git add
を使用して変更を確認し、git commit
/ <=>でローカルリポジトリに保存します。
所属していません StackOverflow