Public : équipes Xcode, SwiftPM ou Gradle sur Mac distant loué où le goulot est la récupération Git. Livrable : matrice, commandes git bundle create, verify, git clone --filter=blob:none, alternates, GIT_HTTP_LOW_SPEED_*, clé de cache CI. Voir Submodule et LFS ; Kaniko et buildx pour l'OCI. Sans compte : accueil, blog, aide.
« Liaison transfrontalière : le bundle vérifié et le shallow borné rendent le volume d'objets prévisible. »

Scénario transfrontalier : liaisons WAN irrégulières vers un runner Mac distant

Sur un Mac Mini M4 hors région, la latence moyenne masque retransmissions et timeouts HTTP qui vident les créneaux. Un git clone monolithique retente les mêmes objets lourds ; un bundle segmenté permet de reprendre le transfert côté stockage sans reconstruire tout le graphe.

1
Contrat flou : sans GIT_HTTP_LOW_SPEED_*, un fetch peut bloquer un worker longtemps sans commit utile.
2
Multi-locataire : un Git bloquant retarde des builds voisins sans partager le dépôt.
3
Audit : la conformité exige la preuve entre artefact stocké et graphe extrait sur APFS.

Stratégie de découpage des bundles Git : tranches, vérification et transfert d'objets

Créez chaque .bundle sur un hôte stable ; limitez-vous à OLD_SHA..NEW_SHA aligné sur vos releases. Après copie vers le Mac, lancez git bundle verify avant extraction et notez les missing commits attendus. Dimensionnez la tranche pour rester sous le seuil multipart de votre stockage objet afin qu'un simple curl ou étape de pipeline puisse reprendre un téléchargement interrompu sans relire tout l'historique distant.

export GIT_HTTP_LOW_SPEED_LIMIT=5000
export GIT_HTTP_LOW_SPEED_TIME=600
git bundle create ci-fenetre.bundle OLD_SHA..NEW_SHA --progress
git bundle verify ci-fenetre.bundle
git clone --depth 1 --filter=blob:none --single-branch \
  --branch main file:///chemin/ci-fenetre.bundle workspace
cd workspace && git remote set-url origin https://git.exemple.com/org/depot.git

Matrice décisionnelle : transport direct, bundle incrémental ou miroir partiel

Modèle Cas d'usage Risques résiduels Indicateur de choix
Fetch HTTPS direct Petit dépôt, branche courte, région proche. Micro-coupures ; pics transcontinentaux imprévisibles. Moins de deux cents mégaoctets utiles sur la branche.
Bundle + shallow Historique lourd en amont, fenêtre CI courte, reprise possible. Noms de bundle et rotation des OLD_SHA. WAN instable ou SLA modeste.
Miroir clone --mirror Parc de Mac partageant un même dépôt. Nettoyeurs concurrents ; lecture seule obligatoire. Forte réutilisation et alternates validés sécurité.

Réutilisation du dépôt d'objets Git : alternates, cache partagé et garde-fous

Renseignez .git/objects/info/alternates vers le objects du miroir ; exportez GIT_ALTERNATE_OBJECT_DIRECTORIES en lecture seule. Avec --filter=blob:none, vous évitez de dupliquer les révisions déjà sur le volume. Pour harmoniser clés Gradle et Git, voir la matrice Gradle Kotlin DSL.

echo /Volumes/git-miroirs/mondepot.git/objects > .git/objects/info/alternates
export GIT_ALTERNATE_OBJECT_DIRECTORIES=/Volumes/git-miroirs/mondepot.git/objects
git fetch origin refs/heads/main:refs/remotes/origin/main \
  --prune --tags --depth 1 --no-show-forced-updates

Reprise après échec, fetch bornés et clés de cache CI sur Mac distant

Enveloppez git fetch avec backoff 2 · 4 · 8 s et au plus cinq essais ; activez GIT_TRACE_PACKET seulement sur échec. La clé de cache doit mélanger pool, condensé du bundle, profondeur shallow, branche et filtre blob:none pour invalider sans collision à la promotion. Ajoutez l'identifiant de la variante Xcode ou du SDK lorsque plusieurs pipelines partagent le même dépôt Git mais des chaînes de compilation différentes sur un Mac loué commun.

for i in 1 2 3 4 5; do
  git fetch origin "+refs/heads/main:refs/remotes/origin/main" && break
  sleep $(( i==1 ? 2 : i==2 ? 4 : 8 ))
done

Séquence opératoire reproductible sur le runner Apple Silicon

  1. WAN. Exporter GIT_HTTP_LOW_SPEED_LIMIT et GIT_HTTP_LOW_SPEED_TIME avant le réseau.
  2. Bundle. Récupérer la tranche, contrôler l'empreinte si politique stricte.
  3. Vérifier. git bundle verify puis git fsck --connectivity-only après le premier fetch.
  4. Shallow. git clone --depth 1 --filter=blob:none --single-branch depuis le bundle puis git remote set-url origin.
  5. Alternates. Fichier ou GIT_ALTERNATE_OBJECT_DIRECTORIES vers miroir lecture seule.
  6. Cache. Clé déterministe, git fetch avec retry, journaux courts en artefact.

Repères chiffrés pour une revue d'architecture ou un dossier conformité

Éléments souvent cités dans les ateliers MacPull

  • 600 s pour GIT_HTTP_LOW_SPEED_TIME : compromis usuel avant de libérer le slot.
  • Cinq essais fetch avec 2 · 4 · 8 s : transitoires sans masquer un mauvais jeton.
  • Clé de cache = pool + digest bundle + profondeur shallow : évite collisions multi-branches.

Synthèse : stabiliser le graphe avant d'accélérer Xcode

Maîtrisez d'abord le transport d'objets ; ensuite seulement SwiftPM ou CocoaPods. Parcours publics : accueil, blog, tarifs, achat, aidesans compte pour SSH, VNC et devis rapide.

Poursuivre : accueil · blog · tarifs · achat · aide.

Mac Mini M4 pour pipelines Git exigeants

Choisissez un nœud Apple Silicon proche de vos équipes, activez SSH ou VNC depuis le centre d'aide, puis déployez bundles et shallow sans sacrifier la traçabilité des objets.