3

GITを使用して開発するプロジェクトがあります。GIT が嫌いなユーザーのために、SVN ミラーのみのリポジトリを作成する必要があります。私はそれについていくつかの指示をググったが、それらはすべて失敗した。それらの一部は Linux 用に書かれています - 私は Windows を持っています。それらの一部は、空のリポジトリを作成し、それをメインの GIT リポジトリと同期することを提案しています。これは、私が本当に望んでいるものではありません。それらの単純な部分は、不可解なメッセージでさまざまな段階で失敗して機能しませんでした。そこで、ここで質問することにしました。このことを自分で機能させるために必死になって git-svn コマンドの説明を掘り下げました。私も失敗です。Github svn export は不安定すぎて依存できません。今、私はあなたに助けを求めています。

では、ここでタスクです。

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

これを本当に機能させることは可能ですか?

4

2 に答える 2

1

SubGitがその方法だと思います。

問題は、SubGit が独自のフックを Subversion および Git リポジトリに直接インストールすることです。そのため、sourceforge や google code などのホスティング プロバイダー用にセットアップすることはできないと思います。

独自の Subversion リポジトリを作成する場合は、SubGit を使用して読み書きミラーをセットアップすることさえ大したことではありません。

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

    $ svnadmin create $SVN_REPO
    
  2. Git リポジトリのクローンを作成します。

    $ git clone --mirror $GIT_REMOTE_REPO $GIT_REPO
    
  3. SubGit を構成します。

    $ subgit configure $SVN_REPO
    
  4. SubGit 構成ファイルを調整します。

    # Specify 'git.default.repository = $GIT_REPO'
    #     at $SVN_REPO/conf/subgit.conf
    
  5. 作成者のマッピングを追加:

    # Add all the authors as
    # svnauthor = Git Author <git.author@company.com>
    #     into $SVN_REPO/conf/authors.txt
    
  6. SubGit を Subversion リポジトリにインストールします。

    subgit install $SVN_REPO
    

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

変更を Subversion リポジトリにコミットすると、SubGit がそれらを自動的に Git コミットに変換するため、それらをフェッチして戻すことができます。

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

于 2012-07-19T12:51:19.673 に答える
0

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

  1. 空の SVN リポジトリをセットアップする
  2. で新しいgitリポジトリをセットアップしますsvn git clone
  3. ローカルの git リポジトリを新しいリポジトリにプルします
  4. git svn dcommitSVN リポジトリと共有したいブランチを実行します

別のまったく異なるアプローチは、同じ作業ファイルで git と SVN を使用することです。.git および .svn ディレクトリをそれぞれ無視することを確認する必要があるだけです。次に、git には git コマンドを使用し、SVN には SVN コマンドを使用します。

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

于 2012-04-17T22:16:56.577 に答える