2013-09-26 2 views
1

Je travaille sur une grande application qui contient un répertoire src/ et je voudrais partager ce que répertoire src/.Comment synchroniser un dépôt git avec un sous-répertoire d'un autre référentiel

Alors, je voudrais pousser périodiquement ce répertoire src/ à un autre référentiel (et de garder les étiquettes et les branches qui ont été faites et contient les modifications apportées aux fichiers à l'intérieur du src/).

Jusqu'à présent, je l'ai fait ce qui suit:

git clone MyBigProject /tmp/foo 
cd /tmp/foo 

# I want to share the master and 1.0, 1.1, 2.0,... branches 
REMOTE_BRANCHES=`git branch -r | tr -d " " | grep "^origin/[0-9]\.[0-9]$"` 
for BRANCH in $REMOTE_BRANCHES; do 
    # So I need to track them locally in order to rewrite them 
    git checkout --track $BRANCH 
done 

git filter-branch --tree-filter 'rm -rf `ls -1 | grep -v src`' --prune-empty -- --all 

git push MySharedRepo --all 
git push MySharedRepo --tags 

Le problème est que filter-branch va créer de nouveaux hash engager, poussant ainsi à la MySharedRepo apporte beaucoup de conflits. Cela signifierait aussi qu'il va corrompre toutes les références des utilisateurs chaque fois que je vais pousser les référentiels partagés.

Je voudrais préciser que MySharedRepo est un référentiel READ-ONLY.

J'ai cherché pendant les derniers jours sans trouver la bonne solution à ce problème, donc merci d'avance si vous pouvez m'aider à le résoudre!

Répondre

0

Le partage du seul sous-répertoire au moyen de la branche de filtre est le bon chemin. De manière optimale, si le répertoire src peut exister seul, le référentiel principal (parent) peut bénéficier de contenir le référentiel filter-branch en tant que sous-module. Cela permet d'obtenir ce qui suit:

  1. Fournit des référentiels distincts pour le contenu src et le projet parent.
  2. Prend en charge le contrôle de l'accès en lecture/lecture + écriture à src en tant que référentiel (si partagé sur un référentiel central comme https://github.com).
  3. Elimine répétées git filter-branch efforts chaque fois sur src engage besoin de partager
Questions connexes