2017-02-18 2 views
1

Je voudrais exposer git archive, mais avoir un moyen pour les utilisateurs de demander l'exclusion de certains fichiers ou globs, afin que le fichier d'archive résultant ne soit pas très volumineux.Spécifiez l'emplacement du fichier gitattributes personnalisé pour l'archive git

Normalement, vous écririez la liste de fichiers/glob à .gitattributes et ensuite exécutez git archive. Mais cela signifie qu'une seule personne peut demander une archive par référentiel sur disque, puisqu'ils doivent écrire leur liste d'ignorés-exportés à .gitattributes, puis récupérer l'archive avant de céder à quelqu'un d'autre. De plus, cela signifie que les réglages que vous avez effectués auparavant ont été fracassés.

Y at-il un moyen que je pourrais écrire dans/tmp/attributes-1 ou un autre fichier temporaire similaire, et dire git archive pour lire ce fichier .gitattributes au lieu de $repo/.gitattributes? En lisant la doc string, ça ne semble pas être le cas.

https://git-scm.com/docs/git-archive

https://git-scm.com/docs/gitattributes

Répondre

1

Avez-vous manqué l'option --worktree-attributes de git archive?

--worktree-attributes

Rechercher des attributs dans .gitattributes fichiers dans l'arborescence de travail ainsi (voir la section intitulée « ATTRIBUTS »).

...

Notez que les attributs sont par défaut pris des .gitattributes fichiers dans l'arborescence qui est archivés. Si vous souhaitez modifier la façon dont la sortie est générée après le fait (par exemple vous avez commis sans ajouter un export-ignore approprié dans son .gitattributes), réglez extrait le fichier .gitattributes que nécessaire et utiliser l'option --worktree-attributes. Sinon, vous pouvez conserver les attributs qui devraient s'appliquer lors de l'archivage de n'importe quel arbre dans votre fichier $GIT_DIR/info/attributes.

Vous devez donc extraire un arbre de travail temporaire, y définir les attributs gitatés et utiliser l'option --worktree-attributes.

+0

L'extraction d'un arbre de travail temporaire modifie également le droit du dépôt? Donc, je ne peux pas effectuer plus d'une opération à la fois. –

+0

Voici comment vous pouvez extraire un arbre de travail temporaire sans modifier le dépôt: 'tmpdir =" $ (mktemp -d) "; mkdir "$ tmpdir"/worktree; cd "$ tmpdir"/worktree; GIT_INDEX_FILE = "$ tmpdir"/index git --git-dir =/chemin/vers/repo/.git checkout HEAD .' – Leon

+0

@KevinBurke J'ai posté une question séparée avec une réponse: http://stackoverflow.com/questions/ 42322079/comment-sécuriser-checkout-a-temporary-working-tree-from-a-git-repository – Leon