web-dev-qa-db-fra.com

Sauvegarde et restauration de la pile d'annulation - bonne ou mauvaise?

Dans une application de bureau souveraine avec annuler/refaire à plusieurs niveaux (c'est-à-dire Photoshop, Word, etc.), serait-il une bonne ou une mauvaise chose d'enregistrer et de restaurer l'historique d'annulation d'un fichier avec le fichier lui-même? Ma réaction initiale est "bonne", mais j'ai constaté que je maintiens parfois Control + Z jusqu'à ce qu'il cesse de fonctionner pour revenir à une version précédente. Des études ou de l'expérience avec cela?

12
Robert Fraser

Un exemple d'une telle application est IntelliJ IDEA (et certains autres environnements de programmation). En plus de l'habituel externe spécifique au projet contrôle de révision , IDEA a un utilisateur spécifique historique local qui enregistre une révision de chaque fichier à chaque sauvegarde (l'historique est stocké dans le répertoire personnel de l'utilisateur). Les anciennes révisions sont stockées par défaut pendant 3 jours ouvrables actifs, après quoi les anciennes révisions sont supprimées. Couplé avec la fonction de sauvegarde automatique de tous les fichiers toutes les quelques secondes (mon la préférence est après avoir été inactif pendant 5 secondes), cela signifie que vous n'aurez jamais besoin de penser à enregistrer des fichiers, et vous pouvez toujours récupérer les anciennes données. C'est une véritable bouée de sauvetage lors de la programmation. (Parfois, je l'utilise également pour savoir comment plusieurs heures que j'ai travaillé sur un projet, pour enregistrer mes heures de travail, car l'histoire locale montre la date et l'heure de chaque changement.)

Un contrôle de révision externe est toujours nécessaire, mais pour d'autres besoins - vous allez généralement valider les modifications lorsque vous effectuez un travail cohérent, au moins une fois toutes les 1-2 heures, et c'est également un moyen de distribuer vos modifications à une autre équipe membres et pour effectuer des sauvegardes. L'historique local, quant à lui, permet de se remettre des mésaventures quelques secondes ou minutes après leur survenue.

Je pense que de nombreux autres programmes bénéficieraient d'une histoire locale similaire. J'adorerais que ma suite Office l'ait, car une pile d'annulation/restauration et l'enregistrement manuel des fichiers sont des moyens très primitifs de récupérer des données perdues (ils ne permettent pas une récupération sélective et ils ne survivent pas au redémarrage du programme). Je me souviens également avoir vu une application de retouche d'image (je ne me souviens pas du nom - je pense que c'était uniquement pour Mac), où toutes les modifications ont été effectuées en tant que transformations de l'image d'origine, et vous pouvez à tout moment revenir en arrière pour modifier l'une des les éditions précédentes. Une telle histoire est donc possible même avec l'édition d'images.

Je ne pense pas que je voudrais que l'historique soit stocké dans le fichier en cours de modification - sinon il deviendrait très gros (une révision toutes les deux secondes; mon historique local pour les projets de programmation sur lesquels j'ai travaillé en un an est 370 Mo) et cela pourrait causer un problème de sécurité en divulguant des données que vous pensiez avoir supprimées - mais un historique par utilisateur serait formidable.

7
Esko Luontola

de temps en temps, je souhaite que Photoshop ou Word aient une telle fonctionnalité, D'un autre côté, comme vous l'avez dit, j'appuie souvent sur control-z jusqu'à ce qu'il s'arrête.

Un autre problème est la performance. Pensez à un projet de document Word distribué et édité pendant des semaines. Ce serait énorme! et prendre une éternité à charger.

Encore un autre problème est la confidentialité. Je ne veux pas que les gens voient quelles mesures j'ai prises pour peindre l'image dans Photoshop, ni quelle était ma proposition précédente au conseil d'administration.

En conclusion, je pense que cela peut être sympa, mais il faudrait avoir un moyen de purger l'historique pour des raisons de performance et de confidentialité et peut-être que si une personne appuie sur ctrl-z, vous devez vous arrêter lorsque vous atteignez l'état du document lorsqu'il était a été ouvert pour la dernière fois et lui demander s'il est sûr de vouloir continuer.

7
Sruly

Il me semble que vous ne voulez pas annuler/refaire, mais la version des fichiers, ou contrôle de révision . (Je ne connais pas Photoshop, mais Word a cette fonctionnalité, désactivée par défaut).

7
peeles

Peut-être un délai d'attente d'annulation qui par défaut est de 5 minutes (et peut être ou non une durée de délai d'attente modifiable)? Cela répondrait aux préoccupations très valables que les gens ont ici concernant la valeur des données d'annulation jours/semaines/mois plus tard. Et cela résoudrait le problème soulevé ici de fermeture accidentelle d'une application et de perte des données d'annulation. Et conserverait la valeur de maintenir Ctrl + Z pour effacer toutes les modifications pendant la "session" (où maintenant une "session" signifie toute utilisation qui a une inactivité inférieure à 5 minutes à la fois)

2
Chris Ledwith

J'aime beaucoup cela, pour les petits et grands projets.

Google Chrome lorsque vous restaurez un onglet que vous avez fermé accidentellement, vous aurez un historique complet - ce qui est génial en soi.

Certaines applications productives construisent leurs artefacts à partir d'une pile d'actions, comme la modélisation 3D où vous appliquez des opérations dans une pile sans fin et pouvez ensuite entrer et modifier les opérations antérieures et faire en sorte que ce changement se propage à travers la pile vers le modificateur actuel. Le format de fichier est alors basé sur le flux d'actions et non sur un résultat final.

Toute application où il n'est pas évident de "publier" une version finale ou publique d'un artefact encourrait cependant beaucoup de risques. Comme si vous envoyez un document Word avec un historique complet des modifications qui offenseraient le destinataire (comme une offre où vous avez changé le nom du client d'un autre client ou autre).

1
Oskar Duveborn

Personnellement, je pense que c'est mauvais. Un système de contrôle de version serait préférable pour cela. Je ne pense pas que les utilisateurs s'attendent à ce que l'annulation fonctionne de cette façon. Je ne vois pas comment ils peuvent se souvenir de ce qu'il y a dans leur pile d'annulation plusieurs jours. Et cela peut potentiellement consommer beaucoup d'espace disque et de mémoire dans votre application. Je veux dire que les utilisateurs ne se débarrassent pratiquement jamais des données. Comment gérez-vous les cas d'utilisation où les utilisateurs souhaitent libérer de l'espace sur leur disque dur car ils sont faibles?

1
Erik Engheim

Mon sentiment est que ce n'est pas le bon outil pour le travail. Annuler et rétablir concerne les actions de ce processus, afin que je puisse annuler/rétablir une action avant d'enregistrer et de continuer. La sauvegarde sur plusieurs sessions me semble être une exigence différente, le versioning est plus le style. Je peux voir qu'il y a une place pour conserver la pile de rétablissement avec une version enregistrée d'un fichier/d'une application, ce qui signifie que vous pouvez ouvrir une version et annuler immédiatement les actions précédentes, mais lorsque vous commencez à faire plus d'actions, vous perdez cela - la pile est redémarré.

Je peux voir que ce serait utile - je peux voir quelques fois que je le voudrais - mais je pense toujours que ce n'est pas le bon usage de cette installation.

0
Schroedingers Cat