2011-01-24 39 views
3

私はGITを使ってプロジェクトを開発しています。私はGITを好まないユーザのためにSVNミラーのみのリポジトリを作成する必要があります。私はそれについていくつかの指示を探検したが、それらのすべてが失敗した。それらの一部はLinux用に書かれています - 私はWindowsを持っています。それらの一部は、空のリポジトリを作成し、それをメインのGITリポジトリと同期させることを提案します。それらの一部は、単純なメッセージを使ってさまざまな段階で失敗しませんでした。そこで私はここで尋ねることにしました。私はgit-svnコマンドの説明を掘り下げて、このことを自分で動作させる絶望的な試みをしました。私も失敗しました。 Githubのsvnエクスポートがあまりにも不安定でそれに依存しています。今私はあなたに助けを求めています。SourceForge:GITリポジトリからSVN

ここでは、タスクです。

  1. ローカルのGITリポジトリには、多くのリンクされたリモート(自分のリポジトリ、sf.net、githubなど)があります。
  2. ローカルリポジトリから、私の開発を反映させるためにSVN対応のGITリポジトリを作成したいと思います。
  3. SVNリポジトリは読み取り専用ミラーになります。 SVNが変更の履歴を保持していればいいけど、それが不可能ならば、私は気にしませんでした。
  4. SVNにミラーリングされるブランチは1つのみです。それはマスターブランチでもミラーリングに特化したものでもかまいません。エーテルを気にしませんでした。
  5. SVNはSourceForgeに常駐します。

これを実際に動作させることは可能ですか?

+6

もし人々が神の愛のために両側にコミットするなら、それをしないでください。私は8ヶ月間web2projectのためにこれを調整しようとしました。 * 1つの悪いrebaseが私たちを水から吹き飛ばし、git-svnは8ヶ月以上(500+コミット)の再同期をしたいと考えました。私は最終的にあきらめて、レポを手作業でマージするだけです...時間がかかり、痛みが少なく、誰かを傷つける可能性が低くなります。 – CaseySoftware

+1

SVNリポジトリは読み取り専用ミラーになる –

+0

git-svnはリポジトリへの同時アクセスを設計でサポートしていないため、両側へのコミットはgit-svnにとって大きな問題です。 SubGitに関する私のコメントを参照してください:このツールが双方向のGit-SVNブリッジとして開発された日からです。 SubversionリポジトリとGitリポジトリの両方が書き込み可能な状態になってもうまく対応します。 – vadishev

答えて

0

git svn initまたはgit svn cloneは、既存のSVNリポジトリに接続することを目的としているため、次のことをお勧めします。

  1. があなたと共有したいブランチのgit svn dcommitを行い、新たな1
  2. にあなたの地元のGitのレポを引いsvn git clone
  3. で新しいGitのレポを設定
  4. 空のSVNのレポを設定しますSVNのレポ

はもう完全に別のアプローチは、同じ作業ファイルのGitとSVNを使用することです。それぞれ.gitと.svnディレクトリを無視してください。次にgitコマンドとSVNのSVNコマンドを使用します。

もちろん、このアプローチでは、両方のリポジトリ内にすべてのコミットを手動で同期させる必要がありますが、両方のリポジトリですべてのコミットを気にしなければ十分です。

1

私はSubGitが行く方法だと思います。

SubGitはSubversionとGitのリポジトリに独自のフックをインストールするという問題があります。ですから、sourceforgeやgoogleのようなプロバイダをホスティングするために設定することは可能でしょうか。SubGitと独自のSubversionリポジトリを作成した場合

、それはセットアップに大したことではありませんでも読み書きをミラー:

  1. Subversionリポジトリを作成します。

    $ svnadmin create $SVN_REPO 
    
  2. クローンGitのリポジトリ:

    $ git clone --mirror $GIT_REMOTE_REPO $GIT_REPO 
    
  3. サブギットの設定:

    $ subgit configure $SVN_REPO 
    
  4. SubGit設定ファイルの調整:

    # Specify 'git.default.repository = $GIT_REPO' 
    #  at $SVN_REPO/conf/subgit.conf 
    
  5. を著者のマッピングを追加します。

    subgit install $SVN_REPO 
    

# Add all the authors as 
# svnauthor = Git Author <[email protected]> 
#  into $SVN_REPO/conf/authors.txt 
  • はSubversionリポジトリにSubGitをインストールします。

    インストールが完了したら、$ GIT_REPOを別のリモートとしてクローンし、このリポジトリにプッシュして、すべてのコミットをSubversionリポジトリに変換することができます。

    Subversionリポジトリに変更をコミットする可能性があります。SubGitはそれらを自動的にGitコミットに変換するので、それらをフェッチすることができます。

    SubGitは商用プロジェクトですが、オープンソースプロジェクトでは無料です。詳細はSubGit documenationgit-svnの比較を参照してください。

  • 関連する問題