2017-06-16 2 views
2

Je rencontre des problèmes avec un dépôt git qui a des fichiers en mode lecture seule (chmod 0440).Git ne peut pas extraire les fichiers avec les autorisations readonly

Parfois, l'un de ces fichiers est modifié sur une autre branche; et quand vous essayez de la caisse de cette branche, git ne parvient pas à mettre à jour ce fichier avec un warning: unable to unlink path/to/the/file: Permission denied

Le problème est que ces fichiers doivent être en mode lecture seule, parce que le cadre utilisé au-delà de ces fichiers jette des messages d'avertissement lourds lorsque ces fichiers sont inscriptibles, et encore plus problématiques, chaque fois que nous (ré) installons le framework dans notre processus d'intégration continue, le framework met à jour ces fichiers pour être en mode lecture seule.

J'ai essayé d'utiliser des crochets git pour chmod automatiquement ces fichiers à 0664 avant de vérifier tout fichier/branche, puis les renvoyer à 0440, mais je ne suis pas sûr que ces crochets existent. Une solution indésirable serait de chmod moi-même ces fichiers à 0664 chaque fois que je sais qu'ils pourraient changer avec git, puis chmod retour à 0440 pour éviter de pousser les fichiers inscriptibles dans un environnement prod, mais cela conduirait à échouer à coup sûr . Une autre solution consisterait à les valider en mode 0664 et à mettre à jour notre processus d'intégration continue pour reconfigurer ces fichiers en 0664 après que le framework a été (ré) installé et ignorer totalement les avertissements; tout en gardant le chmod à 0440 pour l'environnement prod.

Que pensez-vous de ce problème et quelle est la meilleure solution pour le réparer?

+1

mais .... comment pensez-vous écraser un fichier en lecture seule? Je ne suis pas sûr de ce que vous attendez de GIT à faire ici. Rendre le fichier accessible en écriture ou ne pas le mettre à jour. Il me semble que votre véritable problème est * parce que le cadre utilisé au-delà de ces fichiers envoie de lourds messages d'avertissement lorsque ces fichiers sont inscriptibles *. Cela semble impliquer que vous ne devriez pas du tout vérifier ces fichiers dans GIT et que vous ne devriez certainement pas les mettre à jour – Liam

Répondre

2

On dirait que vous essayez d'utiliser Git comme outil de déploiement.

Git n'est pas conçu comme un outil de déploiement. Une des raisons les plus importantes est, qu'il ne suit pas les permissions sauf celle exécutable par l'utilisateur. Si un fichier est en lecture seule, Git ne peut bien sûr pas le modifier, car il est en lecture seule. Peut-être que vous devriez lire http://gitolite.com/deploy.html pour obtenir quelques conseils sur la façon de peut-être être en mesure de construire un outil de déploiement autour de Git.