2011-01-18 11 views
5

私のcvsリポジトリをgitに移行しようとしていて、しばらくこの最後の問題で立ち往生しています。CVSアンサーサンドモジュールはgitと同等です

私は現在、CVSアンパサンドモジュールを使用してプロジェクタ間でコードを共有しています。これらは、プロジェクトのサブディレクトリとは別のリポジトリを基本的に「エイリアス」することができるので、プロジェクト全体を更新/コミットすることができます。

(svn:externals)を参照して、これを行うためのサブツリーマージまたはサブモジュールを推奨するスレッドを見てきました。

  • サブツリーは、あなたが簡単に外部のレポ/押し戻す更新することはできません明らかにマージしますので、これは動作しません。

  • サブモジュールでは、すべてのサブモジュールを手動でプッシュ/プルする必要があります。私は多数のサブモジュールを持っていて、私の変更をプッシュするためにすべてのものに入るのは退屈であり、変更がコミットするのを忘れるため、省略につながる可能性があります。

だけ明確にするために、私はサブディレクトリとして、他のGitのリポジトリが含まれているgitリポジトリを持つことが好きで、1つのコマンドで同時にそれらのすべてに/プル/プッシュをコミットすることができるだろう。

+2

サブモジュールは、あなたが望むものに少し近づくようになっています - 'git fetch'はサブモジュールを意識しています。もっと確実になるでしょう。しかし、サブモジュールでコミットすることは意図した目的から少し離れています。 – Cascabel

+1

あなたが正しいと思われるサブモジュールは、私が探しているものですが、それらはまだかなりありません。私はこのワークフローがかなり一般的であり、gitは今のところ少しずつ存在していると感じたので驚いています。 – paulsc

+1

@paulsc:私は、若干異なるのはもっと一般的だと思います。つまり、スーパープロジェクトとは独立してサブプロジェクトを作成し、次に今度はスーパープロジェクトを新しいバージョンのサブプロジェクトに更新します。 – Cascabel

答えて

1

これは非常にうまくいきません。別々のプロジェクトである場合、それらは別々のリポジトリに属します。

しかし、repoツールはAndroidなどのプロジェクトで使用され、さまざまな場所から来ている可能性のある多数の依存プロジェクトを網羅し、すべてのローカル分岐からのワークフローを持つことができますリビジョン管理(プロジェクトごとに異なる場所に移動する可能性があります)。

これはレイヤーアップであり、正確なgitエクスペリエンスを期待しているなら、それは得られません。標準のgitツールはどのサブプロジェクトでも使用できますが、トップレベルでは調整のための別のツールを使用しています。

+0

私たちのワークフローはそれほど珍しいことではないようです。だから、他の人がこれをどのように扱うのか混乱しているのです。彼らは別々のプロジェクトですが、それは相当量のコードを共有します。したがって、各プロジェクトは、コンポーネントごとに1つのgitリポジトリに理想的にマップされる 'コンポーネント'に細分されます。原子的に物事をコミットする必要がある(つまり、複数のコンポーネント/ git reposを一度に)必要があるのは、異なるコンポーネントのいずれかの変更を見逃したくないからです。 – paulsc

+0

また、レポは興味深いようです - 今はアンドロイド特有のものです。このワークフローを達成する方法は今、gitの上に自分のロールを張るだけのようです。 – paulsc

+0

Androidに固有のものではありません。私は別のプロジェクトでこれを使用しています。プロジェクトは別々であり、コンテナ自体は関連するバージョンを異なるブランチ上に結びつけることができます。これをしないと、2つのプロジェクトが共有プロジェクトに矛盾する変更を導入すると、問題に遭遇します。 – Dustin

0

私のgit-subtreeプロジェクトでは、サブツリーのマージ後に変更を再抽出することができます。多くの人々は、これがgit-submoduleとsubtreeのマージの両方の世界の中で最高のものであると考えています。

関連する問題