Git 🌙
Français ▾ Topics ▾ Latest version ▾ git-fast-export last updated in 2.45.0

NOM

git-fast-export - exportateur de données Git

SYNOPSIS

git fast-export [<options>] | git fast-import

DESCRIPTION

Ce programme vide les révisions données dans une forme appropriée pour être introduite dans git fast-import.

Vous pouvez l’utiliser comme un remplacement de bundle lisible par l’homme (voir git-bundle[1]), ou comme un format qui peut ĂŞtre Ă©ditĂ© avant d’ĂŞtre envoyĂ© Ă  git fast-import afin de faire des rĂ©Ă©critures d’historique (une capacitĂ© sur laquelle s’appuient des outils comme git filter-repo).

OPTIONS

--progress=<n>

Insérer des déclarations de progrès tous les <n>objets, à afficher par git fast-import lors de l’importation.

--signed-tags=(verbatim|warn|warn-strip|strip|abort)

SpĂ©cifier comment traiter les Ă©tiquettes signĂ©es. Puisque toute transformation après l’exportation peut changer les noms des Ă©tiquettes (ce qui peut Ă©galement se produire lors de l’exclusion des rĂ©visions), les signatures ne correspondront pas.

Lorsque vous demandez Ă  « abandonner » (abort ce qui est la valeur par dĂ©faut), ce programme mourra lorsqu’il rencontrera une Ă©tiquette signĂ©e. Avec strip, les Ă©tiquettes seront silencieusement rendues non signĂ©es, avec warn-strip elles seront rendues non signĂ©es mais un avertissement sera affichĂ©, avec verbatim, elles seront exportĂ©es silencieusement et avec warn, elles seront exportĂ©es, mais vous verrez un avertissement.

--tag-of-filtered-object=(abort|drop|rewrite)

SpĂ©cifier comment traiter les Ă©tiquettes dont l’objet Ă©tiquetĂ© est filtrĂ©. Comme les rĂ©visions et les fichiers Ă  exporter peuvent ĂŞtre limitĂ©s par le chemin d’accès, les objets Ă©tiquetĂ©s peuvent ĂŞtre complètement filtrĂ©s.

Lorsqu’il est demandĂ© Ă  abort (ce qui est la valeur par dĂ©faut), ce programme mourra lorsqu’il rencontrera une telle Ă©tiquette. Avec drop, il omettra ces Ă©tiquettes de la sortie. Avec rewrite, si l’objet Ă©tiquetĂ© est un commit, il rĂ©Ă©crira l’Ă©tiquette pour Ă©tiqueter un commit ancĂŞtre (via la rĂ©Ă©criture du parent ; voir git-rev-list[1]).

-M
-C

Effectuer une dĂ©tection de dĂ©placement et/ou de copie, comme dĂ©crit dans la page de manuel git-diff[1], et l’utiliser pour gĂ©nĂ©rer des commandes de renommage et de copie dans le journal gĂ©nĂ©rĂ©.

Notez que les versions précédentes de cette commande ne se plaignaient pas et produisaient des résultats incorrects si vous donniez ces options.

--export-marks=<fichier>

DĂ©charge la table interne des marques dans un <fichier>, une fois terminĂ©. Les marques sont Ă©crites une par ligne comme :markid SHA-1. Seules les marques des rĂ©visions sont Ă©crites ; les marques des blobs sont ignorĂ©es. Des moteurs peuvent utiliser ce fichier pour valider les importations après qu’elles aient Ă©tĂ© complĂ©tĂ©es, ou pour sauvegarder la table des marques Ă  travers des exĂ©cutions incrĂ©mentales. Comme <fichier> n’est ouvert et tronquĂ© qu’Ă  la fin de l’opĂ©ration, le mĂŞme chemin peut aussi ĂŞtre donnĂ© sans risque Ă  --import-marks. Le fichier ne sera pas Ă©crit si aucun nouvel objet n’a Ă©tĂ© marquĂ©/exportĂ©.

--import-marks=<fichier>

Avant de traiter toute entrĂ©e, charger les marques spĂ©cifiĂ©es dans <fichier> ;. Le fichier d’entrĂ©e doit exister, doit ĂŞtre lisible, et doit utiliser le mĂŞme format que celui produit par --export-marks.

--mark-tags

En plus de nommer les blobs et les commits avec des identifiants de marque, vous pouvez aussi nommer les Ă©tiquettes. Ceci est utile en conjonction avec --export-marks et --import-marks, et est Ă©galement utile (et nĂ©cessaire) pour l’exportation de Ă©tiquettes imbriquĂ©es. Cela ne nuit pas aux autres cas et serait la valeur par dĂ©faut, mais beaucoup de frontends d’import rapide ne sont pas prĂ©parĂ©s Ă  accepter les Ă©tiquettes comprenant des identifiants de marque.

Les commits (ou Ă©tiquettes) qui ont dĂ©jĂ  Ă©tĂ© marquĂ©s ne seront pas exportĂ©s Ă  nouveau. Si le backend utilise un fichier --import-marks similaire, cela permet l’exportation incrĂ©mentale bidirectionnelle du dĂ©pĂ´t en gardant les marques identiques entre les exĂ©cutions.

--fake-missing-tagger

Certains anciens dĂ©pĂ´ts ont des Ă©tiquettes sans Ă©tiqueteur. Le protocole d’importation rapide Ă©tait assez strict Ă  ce sujet, et ne le permettait pas. Il faut donc simuler un Ă©tiqueteur pour pouvoir importer rapidement la sortie.

--use-done-feature

DĂ©marrer le flux avec une strophe feature done et le terminer avec une commande done.

--no-data

Ignorer la sortie des objets blob et faire plutĂ´t rĂ©fĂ©rence aux blobs via leur hachage SHA-1 original. Ceci est utile pour rĂ©Ă©crire la structure du rĂ©pertoire ou l’historique d’un dĂ©pĂ´t sans toucher au contenu des fichiers individuels. Notez que le flux rĂ©sultant ne peut ĂŞtre utilisĂ© que par un dĂ©pĂ´t qui contient dĂ©jĂ  les objets nĂ©cessaires.

--full-tree

Cette option fera en sorte que fast-export Ă©mette une directive "deleteall" pour chaque commit suivi d’une liste complète de tous les fichiers du commit (par opposition Ă  la liste des fichiers qui sont diffĂ©rents du premier parent du commit).

--anonymize

Anonymiser le contenu du dĂ©pĂ´t tout en conservant la forme de l’historique et de l’arbre stockĂ©. Voir la section ANONYMISATION ci-dessous.

--anonymize-map=<depuis>[:<vers>]

Convertir le jeton <depuis> en <vers> dans la sortie anonymisĂ©e. Si <vers> est omis, convertir <depuis> en lui-mĂŞme (c’est-Ă -dire, ne pa l’anonymiser). Voir la section sur ANONYMISATION ci-dessous.

--reference-excluded-parents

Par dĂ©faut, l’exĂ©cution d’une commande telle que git fast-export master~5..master n’inclura pas le commit master~5 et fera que master~4 n’aura plus master~5 comme parent (bien que l’ancien master~4 et le nouveau master~4 auront tous les mĂŞmes fichiers). Utilisez --reference-excluded-parents pour que le flux fasse plutĂ´t rĂ©fĂ©rence aux commits dans la plage exclue de l’historique par leur sha1sum. Notez que le flux rĂ©sultant ne peut ĂŞtre utilisĂ© que par un dĂ©pĂ´t qui contient dĂ©jĂ  les commits parents nĂ©cessaires.

--show-original-ids

Ajouter une directive supplémentaire à la sortie pour les commits et les blobs, original-oid <SHA1SUM>. Bien que de telles directives seront probablement ignorées par les importateurs tels que git-fast-import, elles peuvent être utiles pour les filtres intermédiaires (par exemple pour réécrire les messages de commit qui font référence à des commits plus anciens, ou pour dépouiller les blobs par id).

--reencode=(yes|no|abort)

SpĂ©cifier comment gĂ©rer l’en-tĂŞte encoding dans les objets commit. En demandant abort (« abandonner » qui est la valeur par dĂ©faut), ce programme mourra lorsqu’il rencontrera un tel objet commit. Avec yes, le message de livraison sera rĂ©-encodĂ© en UTF-8. Avec no, l’encodage original sera prĂ©servĂ©.

--refspec

Appliquer la refspec spĂ©cifiĂ©e Ă  chaque ref exportĂ©e. Plusieurs d’entre elles peuvent ĂŞtre spĂ©cifiĂ©es.

[<git-rev-list-args>…​]

Une liste d’arguments, acceptable pour git rev-parse et git rev-list, qui spĂ©cifie les objets et rĂ©fĂ©rences spĂ©cifiques Ă  exporter. Par exemple, master~10..master provoque l’exportation de la rĂ©fĂ©rence master actuelle avec tous les objets ajoutĂ©s depuis le commit de son 10ème ancĂŞtre et (Ă  moins que l’option --reference-excluded-parents soit spĂ©cifiĂ©e) tous les fichiers communs Ă  master~9 et master~10.

EXEMPLES

$ git fast-export --all | (cd /dépôt/vide && git fast-import)

Cela exportera le dĂ©pĂ´t entier et l’importera dans le dĂ©pĂ´t vide existant. A l’exception du rĂ©encodage des commits qui ne sont pas en UTF-8, ce sera un miroir un Ă  un.

$ git fast-export master~5..master |
	sed "s|refs/heads/master|refs/heads/autre|" |
	git fast-import

Cela crĂ©e une nouvelle branche appelĂ©e autre Ă  partir de master~5..master (c’est-Ă -dire que si master a un historique linĂ©aire, elle prendra les 5 derniers commits).

Notez que cela suppose qu’aucun des blobs et des messages de validation rĂ©fĂ©rencĂ©s par cette plage de rĂ©vision ne contient la chaĂ®ne refs/heads/master.

ANONYMISATION

Si l’option --anonymize est donnĂ©e, git tentera de supprimer toutes les informations d’identification du dĂ©pĂ´t tout en conservant suffisamment de l’arbre original et des modèles d’historique pour reproduire certains bugs. Le but est qu’un bug git trouvĂ© sur un dĂ©pĂ´t privĂ© persiste dans le dĂ©pĂ´t anonymisĂ©, et que ce dernier puisse ĂŞtre partagĂ© avec les dĂ©veloppeurs git pour aider Ă  rĂ©soudre le bug.

Avec cette option, git remplacera tous les noms de rĂ©fĂ©rence, les chemins, le contenu des blobs, les messages de commit et d’Ă©tiquette, les noms et les adresses email dans la sortie avec des donnĂ©es anonymes. Deux instances de la mĂŞme chaĂ®ne seront remplacĂ©es de manière Ă©quivalente (par exemple, deux commits avec le mĂŞme auteur auront le mĂŞme auteur anonymisĂ© dans la sortie, mais ne prĂ©senteront aucune ressemblance avec la chaĂ®ne auteur originale). La relation entre les commits, les branches et les tags est conservĂ©e, ainsi que l’horodatage des commits (mais les messages de commit et les refnames ne ressemblent pas aux originaux). La composition relative de l’arbre est conservĂ©e (par exemple, si vous avez un arbre racine avec 10 fichiers et 3 arbres, la sortie le sera aussi), mais leurs noms et le contenu des fichiers seront remplacĂ©s.

Si vous pensez avoir trouvĂ© un bogue git, vous pouvez commencer par exporter un flux anonymisĂ© de l’ensemble du dĂ©pĂ´t :

$ git fast-export --anonymize --all >flux-anon

Ensuite, confirmez que le bogue persiste dans un dépôt créé à partir de ce flux (de nombreux bogues ne le feront pas, car ils dépendent vraiment du contenu exact du dépôt) :

$ git init dépôt-anon
$ cd dépôt-anon
$ git fast-import <../flux-anon
$ ... test de votre bogue ...

Si le dĂ©pĂ´t anonyme montre le bogue, il peut ĂŞtre intĂ©ressant de partager le flux-anon avec un rapport de bogue normal. Notez que le flux anonymisĂ© se compresse très bien, donc le gzippage est encouragĂ©. Si vous voulez examiner le flux pour vĂ©rifier qu’il ne contient pas de donnĂ©es privĂ©es, vous pouvez l’examiner directement avant de l’envoyer. Vous pouvez Ă©galement essayer :

$ perl -pe 's/\d+/X/g' <flux-anon | sort -u | less

qui montre toutes les lignes uniques (avec des nombres convertis en « X », pour réduire « Utilisateur 0 », « Utilisateur 1 », etc. en « Utilisateur X »). Cela produit une sortie beaucoup plus petite, et il est généralement facile de confirmer rapidement qu’il n’y a pas de données privées dans le flux.

La reproduction de certains bogues peut nĂ©cessiter la rĂ©fĂ©rence Ă  des commits ou des chemins particuliers, ce qui devient difficile après que les refnames et les chemins ont Ă©tĂ© rendus anonymes. Vous pouvez demander Ă  ce qu’un jeton particulier soit laissĂ© tel quel ou transformĂ© en une nouvelle valeur. Par exemple, si vous avez un bogue qui se reproduit avec git rev-list sensitive -- secret.c, vous pouvez exĂ©cuter :

$ git fast-export --anonymize --all \
      --anonymize-map=sensitive:foo \
      --anonymize-map=secret.c:bar.c \
      >flux

Après avoir importĂ© le flux, vous pouvez ensuite exĂ©cuter git rev-list foo — bar.c dans le dĂ©pĂ´t anonymisĂ©.

Notez que les chemins et les refnames sont séparés en jetons aux frontières des barres obliques. La commande ci-dessus rendrait anonyme sousrép/secret.c comme quelque chose comme chemin123/bar.c ; vous pourriez alors rechercher bar.c dans le dépôt anonymisé pour déterminer le nom de chemin final.

Pour simplifier le référencement du chemin final, vous pouvez mettre en correspondance chaque composant du chemin ; ainsi, si vous anonymisez également sousrép en réppublic, alors le chemin final sera réppublic/bar.c.

LIMITATIONS

Puisque git fast-import ne peut pas Ă©tiqueter les arbres, vous ne pourrez pas exporter complètement le dĂ©pĂ´t linux.git, car il contient une Ă©tiquette rĂ©fĂ©rençant un arbre au lieu d’un commit.

VOIR AUSSI

GIT

Fait partie de la suite git[1]

TRADUCTION

Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .

scroll-to-top