web-dev-qa-db-fra.com

Comment puis-je contrôler les versions et déployer les fichiers statiques d'un site Web tout en préservant les horodatages?

J'utilise NanoBlogger pour générer un site Web entièrement constitué de fichiers statiques — pas de PHP ni rien de similaire.

J'aimerais placer le site sous contrôle de version, ce qui signifie gérer à la fois les fichiers de données de NanoBlogger et les autres fichiers non générés (feuilles de style, images, etc.) qui composent le site avec un système de contrôle de révision ou un autre. J'aimerais également automatiser le déploiement du site Web à partir du RCS.

Ce que j'ai découvert, c'est qu'aucun des systèmes de contrôle de révision modernes (git, Subversion et Mercurial) ne conserve les horodatages des fichiers qu'ils gèrent. Cela signifie qu'un script de déploiement sur le serveur qui extrait une nouvelle copie du référentiel et copie les fichiers dans le dossier public du serveur Web finira par réinitialiser l'horodatage de chaque fichier, même des éléments tels que des images qui n'ont pas été modifiées. Cela annule toute tentative d'utiliser efficacement la mise en cache et finit par faire perdre du temps et de la bande passante aux utilisateurs.

Ma question est donc la suivante Quels outils et quel flux de travail les utilisateurs utilisent-ils pour la gestion des versions et le déploiement de sites Web statiques? Plus précisément, comment résoudre le problème de l'horodatage? Le faites vous

  • gardez simplement une extraction "permanente" du référentiel sur le serveur qui sera juste mise à jour avant chaque déploiement (sans doute une mauvaise pratique),

  • utilisez un RCS "classique" comme CVS qui préserve les horodatages, ou

  • ignorer le problème et accepter un peu de bande passante sera gaspillé?

Ou bien existe-t-il un type de système ou de flux de travail complètement différent?

(Les informations ne manquent pas sur les mécanismes d'utilisation du contrôle de révision avec un site Web , mais je n'ai encore vu personne régler le problème de l'horodatage ou en dire beaucoup sur les sites statiques en particulier.)

4
Simon South

Aucun VCS n'inclut l'horodatage sous forme de métadonnées, même certains incluent des bits d'autorisation. Je pense que c'est parce que lorsque VCS suit le contenu du fichier, l'heure de la dernière modification n'est pas cohérente. Par exemple. quand quelqu'un modifie un fichier, puis annule, l'heure de la dernière modification change, mais ce fichier doit conserver la même version.

En passant, Subversion a une option use-commit-times pour utiliser l'heure de validation comme horodatage de fichier. Ainsi, cela pourrait aider un peu.

3
jcisio