3

SVN プロジェクトがあり、Git または Mercurial にクローンしたいと考えています。1 つの大きな問題を除いて、両方の VCS へのクローン作成は正常に機能します。

問題の根本は、SVN プロジェクトの名前が最近変更されたことにあることがはっきりとわかります (名前の変更は最後のリビジョンであり、私が取得できた唯一のリビジョンです)。SVN を使用すると、プロジェクトの背後にあるすべての履歴を問題なく確認できます。

最も奇妙なことは、git-svn clone を使用すると、多数のリビジョンが表示され、おそらくそれらがインポートされていることがわかりますが、最終的には 1 つのリビジョンしか得られないことです。Git とは異なり、逆方向に動作する Mercurial は、最後のリビジョンを取得するだけでクローン作成が完了します。

また、この最後の SVN プロジェクトの名前変更/移動が唯一のものではないことに注意することが重要です。その前に少なくとも 2 つの名前変更がありましたが、SVN を使用して見たのと同じように、完全なプロジェクト履歴が必要です。

4

2 に答える 2

0

mercurialについては、役立つと思われるこのガイドを見ています。問題を解決するために、git-svnに関連する右側の他の質問が十分にあります。

これは、 Parrotプロジェクトによって行われた git-svn のチュートリアルです。さらに、使用するリビジョン ハッシュ コードを決定するには、git logの後にgit rebaseを実行する必要があるようです。以前と同様に、さらに情報が必要な場合は、コメントを残してください。

于 2012-11-30T08:30:22.967 に答える
0

アイデア

  • 存在しない svn-URL を PEG-revision で複製することは不可能なので

    hg clone http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Greetings@16

    abort: HTTP Error 404: Not Found

もしそれでも

svn ls http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Greetings@16
Hello.txt

名前を変更した親ディレクトリをルートとして使用して、リポジトリのクローンを作成できます。兄弟パスには無関係な多くの changeset を取得しますが、(名前の変更が公平である場合svn move) 問題のパスのすべての chageset がリポジトリにあることを願っています: クリーンアップ履歴しかありません

  • 分割とマージ

SVN-repo をダンプし、svndumpfilter で個別のダンプに分割し (変更されたディレクトリ名ごとにダンプ)、個別の svn-repos にダンプをロードし、すべての svn-repo を独自の Mercurial リポジトリにクローンします (リポジトリは複数の Subversion オリジンを持つことはできません)。リポジトリを共通にプルし、履歴を修正

于 2012-11-30T12:30:14.637 に答える