2010-02-26 4 views
11

L'une des failles inévitables de git est son incapacité à stocker et récupérer des métadonnées sur un fichier. Par exemple, sur le mac, les étiquettes sont stockées avec des "attributs étendus" (accessibles avec xattr), et toute commande checkout/reset/merge/pull effacera ces attributs si le fichier est affecté par la vérification.Crochets Git pour le stockage/l'extraction de métadonnées

J'ai regardé autour de moi pour voir si quelqu'un avait déjà écrit des scripts de sauvegarde de métadonnées, mais je suis revenu au sec.

Donc ce que je voudrais faire est d'utiliser le système de crochet de Git:

  1. Lire les attributs étendus lorsque les fichiers sont engagés,
  2. Écrivez les attributs à un fichier stocké dans le référentiel qui obtient également engagé ,
  3. Appliquez les attributs étendus aux fichiers modifiés lors d'une fusion/extraction/réinitialisation.

Lequel des crochets dois-je utiliser? Est-ce que post-receive et pre-commit sont tout ce dont j'ai besoin? Est-ce que pre-commit peut également ajouter un fichier au commit (c'est-à-dire, après avoir écrit les nouveaux attributs)?

+0

Pourquoi le downvote? Si la question n'est pas satisfaisante, laissez un commentaire pour que je puisse le corriger. –

Répondre

3

Le gibak tool utilise pre-commit et post-checkout pour laisser sa ometastore outil sauvegarde/restauration des métadonnées (y compris le cas échéant xattrs).

Vous ne voulez pas post-receive. Il est exécuté à l'extrémité distante des poussées. Il fonctionne pour les dépôts nus, donc il n'a pas d'entreprise à essayer de mettre à jour les fichiers à partir du contenu d'un commit poussé. Faites-le au post-checkout où vous savez que vous aurez un arbre de travail disponible.

+1

post-fusion est également celui qui devrait être utilisé. Voir githooks (5) http://ftp.kernel.org/pub/software/scm/git/docs/githooks.html –

+0

@Seth Johnson: bonne prise. Vous pourriez avoir 'post-merge' faire le même genre de travail que' post-checkout' pour reconstruire les métadonnées perdues lors de la réécriture des fichiers. La fusion de métadonnées peut toutefois être difficile, en fonction de la manière dont les outils choisis sont stockés et rendus disponibles pour la visualisation/différenciation. –

+0

Si quelqu'un d'autre s'intéresse à un outil tel que gibak, Slug (https://github.com/hbaragar/slug) a l'air d'être un fork de gibak maintenu plus récemment avec la possibilité de sauvegarder dans un dépôt distant. – mormegil

0

metastore est capable de sauvegarder et de restaurer les métadonnées de fichiers, le stocker dans un fichier séparé (que vous pouvez inclure dans votre commits)

Questions connexes