質問

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

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

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

役に立ちましたか?

解決

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

  1. git-svnを使用して、一時ディレクトリにSVNツリーの完全なクローンを作成します。既存のチェックアウトとまったく同じリビジョンを使用してください。
  2. <!> quot; .git <!> quotを移動します。 git-svnチェックアウトの最上位からSVNチェックアウトの最上位へのフォルダー。
  3. その後、Gitに<!> quot; .svn <!> quotを無視するよう指示する必要があります。ディレクトリ、またはそれらをすべて削除できます。
  4. git-svnチェックアウトを削除します。
  5. ここで、Gitとgit-svnを使用して既存のファイルを操作できます。
  6. <!> quot; git status <!> quot;そして、変更がないと言うことを願っています。

他のヒント

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

おそらく、履歴を保持したいと思います。ただし、あなた(またはこのページでつまずいた人)が履歴を必要としない場合は、<!> quot; export <!> quot;を使用できます。ここで説明されている機能: https://stackoverflow.com/a/419475/2437521

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

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

git addを使用して変更を確認し、git commit / <=>でローカルリポジトリに保存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top