2016-11-05 11 views
1

私たちはSVNからGitに移行中ですが、私たちはまだ答えられなかった重要な実用的な問題に直面しています。複数のGitリポジトリでの単一の読み取り専用ビュー

現在、100以上のプロジェクトを含む1つの大きなSVNリポジトリがあります。
3つのJenkinsジョブによって構築されています。つまり、同じジョブによって作成される多くのプロジェクトがあり、常に解放されています(緩やかに結合されています)。

100以上のJenkinsジョブを維持することは不可能であり、すべてのジョブでは、(プロジェクトをいくつ作成するかにかかわらず)ディスク上に約3GBのスペースが必要になるため、この設定は変更できません。
これに3つ以上のアクティブブランチを掛け合わせると、利用可能なリソースが完全に使い果たされます。

単純な解決策は、1つのSVNリポジトリを1つのGitリポジトリに変換することです。
しかし、Gitはリポジトリ内のディレクトリに対するアクセス許可を設定できないため、これは適切な "Git way"ではありませんでした。

しかし、私たちは多くのジェンキンスの仕事の問題に戻ってきます。
原則として、Jenkinsのジョブごとに複数のGitリポジトリを指定することは可能ですが、JenkinsのGUIが多くのエントリを扱うのがうまくないため、さらに多くのリポジトリが追加された場合は、ジョブに新しいリポジトリを追加することを忘れる可能性もかなり高いです。

したがって、一連のリポジトリで一貫性のある(読み取り専用の)ビューを作成するために、サブモジュール、サブツリー、およびサブペクトを調べました。
このビュー(またはそれらのうちのいくつか)は一元的に管理する必要があり、Jenkinsのジョブは単にこのビューをチェックアウトして、プロジェクトのビルドに必要なものすべてを取得します。
ビューを簡単に更新すると、すべてのリポジトリから最新バージョンが取得されます。しかし、わかっている限り、これは、インクルードされたリポジトリを最新のリモートバージョン(Jenkins Gitプラグインではできない)に更新するための特別なコマンドを必要とするか、モジュールポインタを最新バージョンに移動します。

ここでは簡単な質問です:大きなリポジトリを1つ使用せずにGitでこの問題をどのように解決すればよいですか?

+0

[GoogleのREPO](https://code.google.com/p/git-repo/)は、複数のgit reposを操作するのに適しています。 – ElpieKay

答えて

1

ビューを単純に更新すると、すべてのリポジトリから最新バージョンが取得されます。

:彼らのどちらかがGitのサブモジュールで行うのは簡単です最新のリモートバージョン

に含まリポジトリを更新するために、特別なコマンドを必要とするためしかし、私の知る限り理解されるように、これはアプローチのいずれかのために動作しません。

  1. あなたはconfigure a submodule to follow a branch
  2. ビューを更新することができ、あなたが必要なのは、次のとおりです。

    git submodule update --remote --recursive 
    
関連する問題