2013-10-02 29 views
5

GitリポジトリをSVNに移植する必要があるプロジェクトがあります。 私はオンラインで投稿したいくつかの方法を試みましたが、どれも私のために働いていません。 誰かが助けることができれば、本当に感謝しています。 GitからSVNに移行

は、私が最初にすべてのコミットを選ぶ
  • 桜のコミットに頭を巻き戻しコピー
  • に入る作業コピー
  • にGitのレポをクローニング

    • のガイドに従っ
    • することgit svn rebaseおよびgit svn dcommit

    この方法の問題は、私のGitリポジトリに複雑な履歴があることです。 多くのブランチアウトとマージがあります。 私がチェリーピックをしたとき、それは最後のリポジトリの一部だけをピックバックします。

    質問:チェリーピッキングを避ける方法はありますか?git svn rebase? それを別のものに置き換えてもいいですか?

    私はこのウェブポストを追っ:Migrate a Git repo to an svn one

    この投稿を本質的

    • git svn clone
    • がクローン化された作業コピー
    • でGitのレポは
    • をold_masterするマスターを分枝状のフェッチんでしたold_masterからmasterにすべてのコミットを適用しました(git svn rebase
    • git dcommit

    をしたこのアプローチの問題は、私が最初のもので持っていたものと似ています 私はgit svn rebaseをしたとき、競合が多いです。 また、すべての競合をスキップすると、git dcommitが失敗しました。 それは私に語った:Unable to determine upstream svn information from HEAD history.

    私はこの時点で他の何かを試してみることはできません。 私が間違っていたことや何か他の方法で気付いたことがあれば、何か提案をお願いします。 感謝しています!

  • 答えて

    3

    あなたのgitの履歴のいくつかを失うことはできないと思います.SVNはそのような多くの情報を処理できません。

    問題を第三者に委任するために私が考えているハックは、GitHub's SVN supportを利用して作業を楽にすることです。

    あなたの履歴をまったく保持する必要がある場合、またはそれがどれほど完全である必要があるかを実際に考えることをお勧めします。それに基づいて、矛盾しているコミット(または単一のコミットで全履歴)を潰して再構築し、それから始めます。

    フォークはあなたと一緒にいるかもしれません!

    +0

    これは素晴らしいです!本当にシンプルで、私のすべてのニーズに合っています!どうもありがとうございます! – curlingbunny

    +0

    SVNが多くの情報を扱い、実際にはGitよりもはるかに多くの情報を扱うことができるので、Downvoted。主な問題は、Gitは名前の変更や移動を全く追跡しないということです。したがって、移行が複雑になる可能性があります。 – bahrep

    +0

    gitは、コミットで操作を永続化するのではなく、名前の変更を検出します。したがって、git mvを使用するかどうかにかかわらず、単純なmvは関係ありません。 http://stackoverflow.com/questions/2314652/is-it-possible-to-move-rename-files-in-git-and-maintain-their-history/13544573 – dev

    1

    よく、あなたはthis questionを見てください。最良の答えは:

    この方向では、Gitリポジトリにはリビジョンのリニア履歴以上のものが含まれている可能性があります。相違する履歴と頻繁なマージコミットを持つ複数の祖先がすべ​​て可能ですが、Subversionリポジトリでは容易に表現できません。

    Gitリポジトリで線形履歴がある単純なケースでは、git-svn dcommitを使用して、空のSubversionリポジトリにプッシュすることができます。

    関連する問題