2009-11-03 4 views
11

私はgitとgit-svnで読んでいました。私はかなりgitに新しいですが、私はいくつかの基本的なreposを作成することができました。しかし、チームがgit-svnを使用するためにワークフローがどのようになるのか、ちょっと混乱しています。目標は、svnを分岐と共有の目的でgitに変換してから、プロダクションにプッシュする準備が整ったらメインのsvnリポジトリにコミットすることです。ここに私の質問があります:git-svnリポジトリを使用しているチームのワークフローに関する質問

チームの各メンバーはsvn repoからgit repoを作成すべきですか?このアプローチは、svn/svnに戻って合流するときには効果がありますか?

- または -

は1つのgitのレポは、クローンを作成するチームのメンバーのために、そのレポは「公に」プッシュされるのsvnから作成されるべきか?その後、元のgitリポジトリにリベースしてsvnにプッシュするために変更が戻されますか?

- または -

私たちはお互いの作業コピーレポから変更をプル以外は上記と同様の操作を行うことができますか?

- または -

私はワークフローにあまりにも多くの複雑さを追加し、それだけのgitに完全に変換するオプションはありませんので、ちょうど、SVNを使用しておくべきですか?

答えて

2

私はこれらの行に沿って常に何かします。ここにはsvnリポジトリがありますが、gitを使う人がいます。一人でgitリポジトリを作成しただけで、私たちはすべて自分自身で共有しました(オリジナルのインポートは30時間以上かかっていました)。今では誰でもgitで作業でき、git svn dcommitの変更を「本当の」svnリポジトリに戻すことができます。

+0

チームメンバー#1はgit repoを作成できます。チームメンバー#2はチームメンバー#1からクローンできます。その時点で、どちらのチームメンバーもsvnリポジトリにコミットできますか? –

+3

実際に元のgitコピーのzipファイルを作成し、それをWebサーバーに貼り付けました。したがって、 'git clone'を実行してrepoの新しいコピーを作成するのではなく(例えば、新しい開発マシンで)、zipファイルをコピーし、'〜/ .gitconfig'でいくつかの行を編集してからGitのzipファイルが最後に更新されて以来、Subversionリポジトリに新しくなった変更を得るための 'git svn rebase'です。 –

+0

明確にする:各開発者は引き続き互いに引き離すための裸のパブリックリポジトリを作成する必要がありますか?私が今までに読んだことは、誰かの「作業コピー」レポから直接引き出すことについて何も言わなかった。 –

1

Git-svnは、あなたがしたいことを簡単にサポートします。私は各開発者がSubversionリポジトリ(git svn clone)から独自のGitリポジトリを作成することをお勧めします。開発者は、すでにSubversionにプッシュされているコミットとそうでないコミットの両方を含めて、好きな場合には互いから引き離すことができます。

git-svn相当のsvn updateは、git svn rebaseであり、これはSubversionリポジトリに対して実質的にgit rebaseの操作を行います。あなたがコミットする可能性のあるコミット、すでに他の人がコミットしているコミットは自動的にスキップされます。

2

開発者はメインリポジトリに接続できないうちにローカルリポジトリを必要としていますか? (つまり、ラップトップでの飛行機でのコーディング)

もしそうでなければ、私はこの頭痛を完全に避けて、開発者専用のブランチでSVNを使うだけです。 、そのレポが公に」 をプッシュされ

は1つのgitのレポは SVNから作成する必要があります。

しかし、もし、あなたが本当にのgitの分散型アプローチのように、私はあなたの第三の選択肢となるだろうと思います'チームメンバーがクローンするのは? それから、リビジョニングの元のgit repoを に変更し、 をsvnにプッシュすると、変更が戻されますか?で

は、我々は 以外は上記と同様の操作を行うことができますだけで、お互いの 作業コピーレポから変更をプル?

正常に動作するはずです。

2

各ユーザーのgitリポジトリは、特に中央リポジトリに関係なくリビジョンを共有するのが簡単なSubversionクライアントとして考えてください。それから、誰もが一番と思われるものを自分たちでやるべきです。

また、Subversionリポジトリを気の利いたgitリポジトリと考えることもできます。

svnから1つのgit repoを作成する必要がありますか?そのレポはチームメンバーがクローンするために公開されますか?その後、元のgitリポジトリにリベースしてsvnにプッシュするために変更が戻されますか?

git svn cloneはほとんどの場合、git cloneと同じ働きをするので、私は必要ではないと思います。

最も重要なことは、を実行する前に、に常にを実行してgit svn rebaseにすることです。 gitリポジトリ間でたくさんのリビジョンを共有しているのであれば、それを行う前にSubversionに押し入ろうとしている変更を調べることはおそらく良い考えです。git svn dcommit

関連する問題