0

いくつかのSVNプロジェクトをgitに移行しています。

特定のタグを独自のgitリポジトリに複製したいと思います。

TAGパスでgitsvncloneを実行することにより、最初にタグを作成したsvnコピーの前に発生したすべての履歴を失います。

新しいgitプロジェクトで元の履歴を保持する方法はありますか?(選択したIDEでSVN履歴を参照できるため、SVNは必要な情報を提供できるようです)

注意:SVN構造に似たブランチとタグを持つトランクプロジェクトは必要ありません。TAGとすべての履歴(タグ作成前のリビジョンを含む)を添付した別のプロジェクトが必要です

4

1 に答える 1

0

--follow-parentフラグを確認してください:

 git svn clone --follow-parent https://path.to/svnroot/repo/tags/0.12

編集:

ただし、git svn複製されたディレクトリのコンテキスト内にあるコンテンツのみが表示されることに注意してください。svn-taggingは通常、あるディレクトリを別の場所にコピーすることを伴うため、gitが機能するのに十分なコンテキストを確保するには、ディレクトリツリー全体(「トランク」と最後の「tagX」ダイレクタの両方を含む)が必要です。この理由は、gitがgit-repository自体の外部のパスとの間で何かをコピーすることを拒否するためです(これは理にかなっています)。svnは、実際には完全なコンテキストを持っているため、履歴全体を見ることができます(ローカルマシンで部分的なチェックアウトしかない場合でも、サーバー上で)

したがって、完全な履歴をgit svnクローンに含めるには、プロジェクト全体(つまり、少なくともトランクとtag-dirの両方を含むディレクトリ)のクローンを作成する必要があります。

したがって、続行する方法は次のようになります。

  • 特別な設定がある場合git svn cloneはtrunk/tags / branchsディレクトリ(--trunk--tagsおよびフラグを指定し、リポジトリが標準の/ trunk、/ tags / ...、/ branchs /に編成されている場合は使用する)を指定して、svnリポジトリをいっぱいにします。 ... 仕方)--branches--stdlayout

  • これにより、多数のgitブランチとgitタグを含むgitリポジトリが提供され、不要なすべてのブランチ/タグを削除できます(またはサーバーにプッシュしないでください)。

于 2012-12-17T14:36:27.950 に答える