7

問題は単純なものです。git cvsimportを使用して、cvsリポジトリをローカルgitリポジトリのリモートブランチにインポートしました。次に、このリポジトリ(ブランチ、タグ、およびすべて)をクラウド内のgitリポジトリ(github / gitorious)に同期したいと思います。これを行うには、rsyncにアクセスしたり、リポジトリを直接コピーしたりすることができません。gitpushを使用する必要があります。

他の人が完全な_cvsimport_d履歴にアクセスできるように、ローカルリポジトリをミラーリングするにはどうすればよいですか?

具体的
には、cvsimportを使用してリポジトリをインポートおよび追跡します。

git cvsimport -i -v -C cdt-make-core -d:pserver:anonymous@dev.eclipse.org:/ cvsroot / tools -r cvs org.eclipse.cdt / all / org.eclipse.cdt.make.core

上記は、 org.eclipse.cdt.make.coreをgitrepocdt-make-coreのリモートcvsにインポートします。

次に、メインのCVSブランチのHEADをgithubにプッシュできます。

git push github cvs / master:refs / heads / cvs / HEAD

(リモートでパスを明示的に指定しているので、パスが存在しない場合は作成されます。)

すべてのブランチを同期する方法はありますか:リモートでcvs / * => cvs / *?
すべてのタグを同期する方法はありますか?

4

3 に答える 3

5

--mirror私はあなたがプッシュするオプションを探していると思います:

git push --mirror github

これにより、早送り以外の更新を含むすべての参照(ブランチとタグ)がプッシュされます。これを使用して、ローカルリポジトリのバックアップを作成します。

マニュアルページでは、次のように説明しています。

プッシュする各参照に名前を付ける代わりに、下のすべての参照(、、、およびを含むがこれらに限定されない)がリモートリポジトリにミラーリングされるように指定$GIT_DIR/refs/refs/heads/ます。新しく作成されたローカル参照はリモートエンドにプッシュされ、ローカルで更新された参照はリモートエンドで強制的に更新され、削除された参照はリモートエンドから削除されます。構成オプションが設定されている場合、これがデフォルトです。refs/remotes/refs/tags/remote.<remote>.mirror

[OT:私は日常業務でCDTを使用しており、気に入っています!]

于 2009-09-08T15:28:49.320 に答える
3

私の調査結果は、以下の2番目の合理的な解決策を使用する場合、プッシュしようとしているcvs /ブランチを消去するため、最初に--mirrorを実行する必要があるということです。したがって、完全な式は次のとおりです。

git push --mirror -v github
git push --force github cvs/master:refs/heads/cvs/HEAD
for x in `git branch -r | grep '^..cvs/[a-zA-Z0-9_-]*$' | sed -e 's/^..//'` ; do  
  git push -v github $x:refs/heads/$x
  git config branch.$x.remote github
  git config branch.$x.merge refs/heads/$x
done
于 2010-01-29T17:21:16.740 に答える
1

実験してみましたが、自分がやりたいことに対するサポートが組み込まれているとは思いません。

ただし、2つの合理的な解決策があるようです。

  • cvsimportに-rを指定しないでください。
    インポートされたブランチはリポジトリに直接存在し、Patが提案したように--mirrorを使用できます。
  • * cvs / **リモートを一度に1つずつプッシュするシェルスクリプトを記述します(これは簡単です)。タグが正しく同期されるように--mirror
    を使用します

私はもともと、名前空間のためにcvsimportdブランチを分離したままにしておきたかったのです。ただし、最初のオプションでは、cvsimportリポジトリを完全に分離しておく(そしてそこからクローンを作成するだけにする)のが理にかなっています。その後、追跡gitリポジトリを汚すリスクなしにCVSを追跡し続けることができます。

于 2009-09-15T09:28:09.100 に答える