32

バージョン管理のためにsvnに保持されているソフトウェアを使用しています。git (git-svn) を使用したいのですが、ソフトウェアを使用するには多くのセットアップと構成が必要です。svn 経由ですべてのコードをチェックアウトするなど、すべてのセットアップを処理するツールがあります。

git-svn のすべてのドキュメント (私が見つけたもの) には、git-svn を使用して新たにチェックアウトする必要があります。

git-svn を使用できるように、既存の svn チェックアウトを変換する方法はありますか?

4

4 に答える 4

14

いいえ。git-svnクローンはリポジトリ全体をgitに変換します。SVNチェックアウトにはリポジトリ全体が含まれていないため、クローンを作成することはできません。これは、SVNまたはCVSから分散システム(gitなど)に切り替える主な利点です。

于 2009-05-05T20:59:14.933 に答える
11

次のようなことができます。

  1. git-svn を使用して SVN ツリーの完全なクローンを一時ディレクトリに作成します。既存のチェックアウトとまったく同じリビジョンを使用していることを確認してください。
  2. 「.git」フォルダーを git-svn チェックアウトの最上位レベルから SVN チェックアウトの最上位レベルに移動します。
  3. 次に、「.svn」ディレクトリを無視するように Git に指示するか、それらをすべて削除する必要があります。
  4. git-svn チェックアウトを削除します。
  5. そこで、Git と git-svn を使用して既存のファイルを操作できるようになりました。
  6. 「git status」を実行して、変更がないことを確認してください。
于 2009-05-06T02:15:47.403 に答える
4

おそらく履歴を残したいと思います。ただし、あなた (またはこのページに出くわした他の人) が履歴を必要としない場合は、https ://stackoverflow.com/a/419475/2437521 で説明されているように「エクスポート」機能を使用できます。

于 2013-08-08T17:21:42.243 に答える
1

これを行う別の方法は、元のSubversion作業コピーを変更せず、コピーする必要がない、パッチを使用することです。

  1. git-svnを使用して、Gitリポジトリとなる新しいディレクトリにSubversionツリーの完全なクローンを作成します。既存のチェックアウトとまったく同じリビジョンを使用していることを確認してください。git reset --hard :/r<revision>クローン作成後に強制的に同じリビジョンにするために使用できます。ここ<revision>で、Subversion作業コピーが更新されるリビジョンです(ここを使用してこれを参照してくださいsvn info)。
  2. cdSubversionの作業コピーに。
  3. svn statusすべての新しいファイルがでマークされているA(またはそれらを追加するために使用するsvn add)こと、およびすべての削除されたファイルがでマークされているD(またはsvn rmそれらを削除するために使用する)ことを確認するために使用します。
  4. 実行svn diff >patch.diffしてパッチファイルを作成します。
  5. patch.diff前に作成したGitリポジトリの一番上にコピーします。
  6. cd以前に作成したGitリポジトリの先頭に移動します。
  7. 実行git apply -p0 patch.diffして、Gitリポジトリの作業ツリーにパッチを適用します。

git statusこれで、、およびgit add/を使用して変更をgit commit確認し、ローカルリポジトリに保存できます。

于 2011-08-31T11:08:22.040 に答える