Je suis un universitaire et j'aime faire autant de mes écrits que possible dans Emacs. Un élément clé qui me manque est la possibilité de revoir facilement les modifications que j'ai apportées à un fichier texte au fil du temps.
Les fonctionnalités de suivi sur les articles Wikipedia ou Google Documents sont à la fois dans le sens de ce que je recherche. J'ai joué avec des systèmes de contrôle de version comme git car ils semblent être bien supportés par Emacs, mais je les ai trouvés difficiles à utiliser et beaucoup plus complexes que ce dont j'ai besoin. Enregistrer des référentiels, s'enregistrer et sortir, tout cela était juste gênant.
Je ne suppose pas qu'il existe des packages qui fournissent les fonctionnalités que je recherche d'une manière relativement conviviale?
la source
git
andmagit
- github.com/magit/magit - car vous avez déjà joué un peu avec. Vous voudrez probablement vous familiariser avec les options de ligne de commande afin d'avoir une meilleure compréhension de ce quimagit
se passe. Emacs n'est pas pour les non-codeurs, mais vous êtes sur la scène depuis assez longtemps pour ne pas en avoir peur - :) Vous pouvez également essayer de jouer avecgist
: github.com/defunkt/gist.elvc-
groupe de commandes est de simplifier le processus d'utilisation des VCS. Malheureusement, ils ne sont pas aussi intuitifs que de permettre à des utilisateurs sans expérience d'en faire un bon usage. En revanche, des systèmes comme ceux que vous mentionnez sont très limitatifs, de sorte que l'on développe rapidement des demandes qu'ils ne peuvent satisfaire. gnu.org/software/emacs/manual/html_node/emacs/… il existe un mécanisme simpliste pour conserver les sauvegardes, mais en raison de ce qui précède, je recommanderais plutôt d'apprendre à utiliser du VCS à la place.git
/magit
pour le contrôle de version de mes articles. Cela semble intimidant pour commencer, mais a) vous n'avez pas à tout apprendre en même temps, et b) c'est agréable à utiliser après avoir franchi la courbe d'apprentissage initiale. Un bon flux de travail vous aide également à discipliner vos tâches d'écriture, car il vous encourage à annoter ce que vous faites - ce qui est un excellent moyen d'obtenir une chronologie de l'évolution du projet d'écriture.Réponses:
Le problème avec les systèmes de contrôle de version existants n'est pas tant leur complexité; c'est le fait qu'il existe une telle richesse d'informations qu'il peut être très difficile pour les débutants de voir la forêt pour les arbres (c'est-à-dire, de comprendre ce qu'ils font et n'ont pas besoin d'apprendre quand ils ne font que commencer) ).
Ce message va se concentrer sur
git
et décrire comment le contrôler à partir d'Emacs à l'aide d'un module complémentaire appelémagit
. Oui ,git
c'est complexe, mais vous n'avez pas besoin d'apprendre beaucoup pour l'utiliser de manière productive aux fins que vous décrivez.Je vais supposer que vous avez
git
installé (si vous ne le faites pas, obtenez-le ici ) et que vous ne voulez pas quitter Emacs du tout.L'installation
magit
magit
est ungit
frontal pour Emacs. Il est disponible auprès de MELPA et vous pouvez l'installer via:M-x
package-install
RETmagit
RETSi vous n'avez pas activé MELPA dans votre configuration, vous pouvez trouver des instructions sur la façon de le faire ici .
Configuration d'un référentiel
Disons que vous avez un dossier appelé
~/writing
dans votre répertoire personnel qui contient un ou plusieurs documents que vous souhaitez mettre sous contrôle de version.~/writing
RETshell
RETgit init
et appuyez sur RET.C'est ça. Vous avez maintenant un
git
référentiel. Il n'est pas nécessaire de "l'enregistrer" n'importe où.git
est un système de contrôle de version distribué ; il ne nécessite pas de serveur distant pour suivre les modifications.Vérification de l'état de votre référentiel
magit-status
RET.Vous pouvez penser au tampon qui apparaît comme votre «panneau de contrôle» pour travailler avec votre référentiel. Pour un nouveau référentiel, il ressemble à ceci:
Vous pouvez naviguer entre les différentes sections de ce tampon en utilisant n(
magit-goto-next-section
) et p(magit-goto-previous-section
).Vous pouvez actualiser le tampon en appuyant sur g(
magit-refresh
).Notez que vous pouvez afficher le tampon d'état à partir de n'importe quel fichier ou répertoire appartenant au référentiel que vous avez configuré précédemment.
Ajout de fichiers
Comme vous pouvez le voir sur la capture d'écran, il y a trois fichiers dans le référentiel qui
git
ne sont pas actuellement suivis. Pour diregit
de commencer à suivre un fichier, vous devez le mettre en scène : avec le point sur le fichier que vous souhaitez ajouter, appuyez sur s. Le tampon d'état ressemblera alors à ceci:S'engager
Après avoir transféré un ou plusieurs fichiers, vous pouvez les valider en appuyant sur c c. Cela fera apparaître un tampon qui ressemble à ceci:
Saisissez votre message de validation en haut, puis appuyez sur C-c C-cpour finaliser la validation. (Pour abandonner, appuyez sur C-c C-k.)
Le tampon d'état ressemblera alors à ceci:
Modifications par étapes
Si vous apportez des modifications à un fichier suivi, elles seront répertoriées dans une section distincte ("Modifications non mises en scène") dans le tampon d'état:
Pour revoir les modifications que vous avez apportées au fichier, accédez à la ligne qui dit
Modified file-1.txt
et appuyez sur TAB:Pour mettre en scène ces changements, appuyez sur s:
Affichage des validations passées
Enfin, si vous souhaitez consulter les validations passées, vous pouvez appuyer sur l l(c'est deux L minuscules):
Comme d'habitude, vous pouvez parcourir le tampon fourni avec net p. Magit affichera les changements associés aux commits individuels répertoriés dans ce tampon dans une fenêtre séparée.
Sommaire
De la coque:
git init
: Initialiser legit
référentiel dans le répertoire courantDepuis n'importe quel fichier ou répertoire associé à un
git
référentiel:magit-status
RETDepuis le tampon d'état:
s pour ajouter de nouveaux fichiers ou des changements d'étape
c c pour valider les modifications par étapes
C'est ça. :)
la source
git init
partir du shell. Si vous appelezM-x magit-status
quelque part en dehors d'un dépôt git, il vous proposera d'en créer un. (Mais vous devrez l'appeler à nouveau pour afficher le tampon d'état après avoir terminé la configuration).magit-diff-refine-hunk
pour obtenir le comportement souhaité. Ajoutez(setq magit-diff-refine-hunk t)
ou(setq magit-diff-refine-hunk 'all)
à votre fichier init. Vous pouvez faireC-h v
magit-diff-refine-hunk
RET
pour obtenir plus d'informations sur la signification des différents paramètres.En plus de
magit
(comme le montre la réponse de @ itsjeyd), vous pouvez également essayergit-timemachine
, qui fournit des fonctionnalités pour parcourir rapidement les anciennes versions d'un fichier sousgit
contrôle de version. Selon sa page github, les raccourcis clavier par défaut suivants vous donnent une idée de ce que vous pouvez faire:p
Visitez la version historique précédenten
Visitez la prochaine version historiquew
Copiez le hachage abrégé de la version historique actuelleW
Copiez le hachage complet de la version historique actuelleq
Quittez la machine à voyager dans le temps.la source
Je pense que vous trouverez le mode Sauvegardes et / ou Backup Walker très intéressant.
Les deux visent à tirer parti des mécanismes de sauvegarde existants dans Emacs et à fournir un meilleur accès et une meilleure visibilité de l'historique de vos fichiers, sans nécessiter de VCS supplémentaire.
la source
Comme cela a été mentionné, un système simple pour avoir différentes versions d'un fichier est le système de sauvegarde Emacs.
Cela utilisera un répertoire dédié pour les sauvegardes numérotées, qui ne seront jamais supprimées automatiquement. Ensuite, vous pouvez utiliser C-u C-x C-spour créer une autre version à tout moment.
Cependant, je pense qu'il n'y a pas d'interface facile à utiliser, par exemple pour différencier ces versions. Il vous faudrait donc ouvrir manuellement une ou deux de ces sauvegardes et les utiliser
ediff-buffers
et / ou le tampon d'origine.la source
m
point de déplacement vers l'autre fichier et appuyez sur=
).Je n'ai pas encore eu l'occasion d'utiliser cette solution, mais vous pouvez également envisager le flashbake de Cory Doctorow et Thomas Gideon . Voici ce que Doctorow a à dire à ce sujet :
Cela étant dit, je n'ai jamais eu l'occasion de le tester, car j'ai fini par écrire beaucoup de choses en mode org, et je programmais beaucoup, et ... eh bien ... je me suis un peu amélioré dans l'utilisation
magit
, et à la fin, je sorte de ... juste pas besoin de l'utiliser.En tout cas, cette solution s'adressait aux rédacteurs travaillant sur des projets non techniques. Vous trouverez peut-être que cela peut répondre à vos besoins.
la source
Bien que cela ne soit absolument pas lié à
emacs
, vous pouvez toujours enregistrer vos fichiers texte dans Dropbox et si vous êtes un utilisateur professionnel, vous pouvez utiliser l' historique des versions étendu . (Si vous voulez crypter, vous voudrez peut-être regarder SparkleShare .)Ensuite, il y a flashbake qui est un peu automatisé ( voici un tutoriel ).
En outre , il a été demandé ailleurs aussi , dont les réponses pourraient vous être utiles.
la source
Vous pouvez utiliser Dropbox. Il rend la version révisable de votre fichier à chaque fois que vous appuyez sur Cx Cs. Pour le cryptage de mes fichiers texte, j'utilise GNU Privacy Guard, il est pris en charge par Emacs.
la source