私のチームメイトと私は、svn リポジトリを git リポジトリと同期させるのに苦労しています。私たちはプロジェクトに取り組んでおり、svn リポジトリ (assembla.com サイトでホスト) でコードを共有するように求められています。私たちは git を使用してコードのバージョン管理に慣れているため、git が提供する git svn 機能をうまく利用することにしました。すべての作業を共有し、適切なブランチに分割しておくために、git 用のリモート リポジトリ (bitbucket) もあります。
これまでのところ、git でコミットしたすべての作業で問題は発生していませんが、svn リポジトリの同期に関しては、エラーが次々と発生します。
この回答に従いました既存の git リポジトリを SVNにプッシュして svn リポジトリを git リポジトリに接続しましたが、いくつかのマージとコミットの後、エラーが発生し、変更をコミットできなくなりました。
現在、svn/trunk のコピーであるブランチがあります
$ git checkout -b assembla_copy -t svn/trunk
Branch assembla_copy set up to track local ref refs/remotes/svn/trunk.
Switched to a new branch 'assembla_copy'
$ git svn rebase svn/trunk
Current branch assembla_copy is up to date.
それをマスターブランチと同期するために、私は両方を試みました
git merge master
と
git rebase master
しかしgit rebase master
、最初のコミット以降のすべての変更を適用し始め、多くの競合を与えている間 (代わりに svn/trunk にこの変更が既にある場合、何らかの方法でいくつかの変更をオンラインリポジトリにプッシュすることができたので、私たちは現在ar r46)、うまくいきgit merge master
ますが、dcommitすると、すべての変更が1つのコミットにまとめられ、「ブランチ 'master'をassembla_copyにマージする」と記載されていますが、すべての個別のコミットを行うことをお勧めしますコミットします(最初に行ったように..)。
マスター ブランチから dcommit すると、すべてのコミットが分離されますが、マスター ブランチはリベースされるため、マスター コミットを親として持つすべてのブランチは、マスター ブランチから分離されたものとして表示されます。
すべての作業が行われる git リポジトリをミラーリングする svn リポジトリを作成するための正しいワークフローを説明していただけますか (svn リポジトリは単なるコピーです)。 先週解決策を探しているときにいくつかの回答で見たように、複雑なbashスクリプトではなく、標準のgitコマンドだけを使用できますか?
ありがとうございました!