11
votes

Comment faire du clonage peu profond une seule branche en git?


2 commentaires

Je suis désolé ... Vous avez juste répondu à votre propre question ou j'ai mal compris? ( archive git )


Remarque: j'ai mis à jour ma réponse ci-dessous avec GIT1.7.10 et le nouveau " git clone-clone -single-branche ".


3 Réponses :


5
votes

Jakub déjà mentionné a Le clone peu profond de branches sélectionnées est possible , mais assez complexe à faire.
Et il a ajouté:

Notez cependant que, parce que les succursales partagent généralement la majeure partie de leur histoire, le gain de clonant uniquement un sous-ensemble de branches pourrait être plus petit que vous ne le pensez.

J'ajouterais que vous ne devriez pas avoir d'outil VCS dans une plaque de production (vous installez uniquement / surveillez ce qui est nécessaire pour la production à exécuter ).
Donc archive git reste le meilleur moyen d'extraire ce dont vous avez besoin, en tant qu'archive ( zip ou gare , format que vous pouvez ensuite utiliser sans git, une fois transféré sur le côté de la production )


mise à jour mars 2012:

le Le prochain git1.7.10 (avril 2012) vous permettra de cloner une seule branche: xxx

Vous pouvez le voir dans t5500-fetch-pack.sh :: xxx

cette fonctionnalité est ensuite corrigée avec:

  • engager 31b808a03290a4f87c571cc1c61f26d8a03c7025 (Ralf Thielow, Git 1.7.12.3, octobre 2012)

    Clone --Single : Limitez la récupération RefSpec à une branche extraite

    Après avoir exécuté " git clone --Single ", le référentiel résultant a la valeur par défaut habituelle " + refs / têtes / *: refs / télécommandes / origine / * " Wildcard Fetch Refspec installé, ce qui signifie qu'un " git fetch git finira par saisir toutes les autres branches.

    Mettez à jour la Fetch RefSpec pour couvrir uniquement la référence clonée seul pour corriger cela.

    • commettre 60A5F5F ( JUNIO C HAMANO ( GITSTER ) , GIT 2.0.2, Juillet 2014)

      intégré / clona.c: Détectez un clone à partir d'une étiquette correctement

      31b808a ( Clone --Single : limite La Fetch RefSpec à une branche récupérée, 2012-09-20) a essayé de voir si la "branche" donnée à suivre est en réalité une étiquette sur le référentiel à distance en vérifiant avec " refs / tags / " mais incorrectement utilisé strtstr (3) ; Il est activement tort de traiter une "branche" " refs / têtes / refues / tags / foo " et utilisez la logique pour " refs / tags / " Ref Hiérarchie.
      Ce que le code voulait vraiment faire est de voir s'il commence par " refs / tags / ".


      Mise à jour Sept 2016: CLONE GIT CLONE - SINGLE-BRANCHEZ-BRANCHEZ fonctionnera pour des balises chaînées dans GIT 2.11+ (Q4 2016).


2 commentaires

Oui, un clone complet d'une seule branche ne va probablement pas économiser beaucoup, mais je m'attends à ce qu'un clone peu profond d'une seule branche pour se rapprocher de la taille d'une archive GIT, plus permettez-moi de GIT Tirez


@Allen: Mais une traction git signifierait avoir un git sur la plate-forme de production, non? Et cela est généralement considéré comme une "mauvaise" pratique.



0
votes

Vous pouvez simplement faire un clone normal (peu profond) et supprimer plus tard les branches superflues localement (ainsi que les branches à distance de suivi). Vous auriez toujours tout le trafic réseau, mais plus tard, votre espace disque est plus petit.


1 commentaires

Il peut être difficile de supprimer les fichiers sous-jacents cependant. Vous auriez besoin de remballer et de rejeter le reflètement de reflus, et pruneaux avec la date d'expiration définie pour maintenant.



0
votes

Versions git récentes (j'ai v2.7.3) Support Clonage peu profond de Une seule branche en appelant: xxx


0 commentaires