J'ai trouvé une collection de slackbuilds, dont j'ai besoin sur GitHub. https://github.com/PhantomX/slackbuilds/ Je ne veux pas obtenir tous les git.
git clone https://github.com/PhantomX/slackbuilds.git
Mais obtenez seulement un slackbuild, pour celui-ci .
Comment faire ça? C'est possible?
Réponses:
Vous finirez par télécharger l'intégralité de l'historique, donc je n'y vois pas beaucoup d'avantages, mais vous pouvez extraire des pièces spécifiques en utilisant une extraction "clairsemée". Citant ce post Stack Overflow :
Il vaut peut-être mieux aussi utiliser un clone peu profond . Au lieu de la
git pull
commande donnée précédemment, essayez:la source
error: Sparse checkout leaves no entry on working directory
après avoir fait un git pull après avoir apporté la modification àcore.sparseCheckout
et.git/info/sparse-checkout
Essaye ça:
la source
/trunk
et supprimer/tree/master
. Plus icigit clone --filter
de Git 2.19Cette option sautera en fait la récupération des objets inutiles du serveur:
Le serveur doit être configuré avec:
Il n'y a pas de support serveur à partir de la v2.19.0, mais il peut déjà être testé localement.
TODO:
--filter=blob:none
ignore tous les blobs, mais récupère toujours tous les objets d'arbre. Mais sur un dépôt normal, cela devrait être minuscule par rapport aux fichiers eux-mêmes, donc c'est déjà assez bon. Demandé à: https://www.spinics.net/lists/git/msg342006.html Devs a répondu un--filter=tree:0
était en train de le faire.N'oubliez pas que cela
--depth 1
implique déjà--single-branch
, voir aussi: /programming/1778088/how-to-clone-a-single-branch-in-gitfile://$(path)
est nécessaire pour surmontergit clone
les manigances du protocole: /programming/47307578/how-to-shallow-clone-a-local-git-repository-with-a-relative-pathLe format de
--filter
est documenté surman git-rev-list
.Une extension a été apportée au protocole distant Git pour prendre en charge cette fonctionnalité.
Documents sur l'arbre Git:
Testez-le
GitHub en amont .
Sortie dans Git v2.19.0:
Conclusions: tous les blobs de l'extérieur
d1/
sont manquants. Par exemple0975df9b39e23c15f63db194df7f45c76528bccb
, qui n'estd2/b
pas là après le départd1/
.Notez que
root/root
etmybranch/mybranch
sont également manquants, mais les--depth 1
masquent dans la liste des fichiers manquants. Si vous supprimez--depth 1
, ils apparaissent sur la liste des fichiers manquants.la source
J'ai finalement réussi à le faire grâce à ce qui précède. J'étais en train de modifier le fichier directement, obtenant des erreurs en incluant accidentellement les guillemets. Votre fichier .git / info / sparse-checkout doit inclure uniquement le répertoire, sans guillemets. Voici un exemple: Ce projet gigantesque: https://github.com/SharePoint/sp-dev-fx-webparts , je voulais juste le react-script-editor dans le répertoire samples. https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples/react-script-editor
J'ai suivi les instructions ci-dessus et l'ai fait fonctionner lorsque mon fichier .git / info / sparse-checkout avait juste cela en elle
samples / react-script-editor
la source
Cela clonera un dossier spécifique et supprimera tout l'historique sans rapport avec celui-ci.
la source
Pour les référentiels GitHub, vous pouvez cloner tous les sous-répertoires de tout référentiel GitHub (à n'importe quelle référence) en utilisant https://github.com/HR/github-clone
la source