Ce qui serait pratique serait d'intégrer mercurial AVEC emacs. Heureusement, il y a mercurial.el. Mais ce qui serait encore mieux, c'est de l'interfacer façon loutre avec emacs, que tout soit fait automagiquement. Voici donc un bout de code qui répond à ce besoin :

(defun gtd ()
    (interactive)
    (benj/org-hg-update)
    (find-file "~/.org/perso.org"))
 
(load-library "mercurial")
 
(defun benj/org-hg-commit ()
  (interactive)
  (find-file "~/.org/")
  (hg-commit-start))
 
(defun benj/org-hg-auto-commit ()
  (interactive)
  (save-window-excursion
    (find-file "~/.org/")
    (hg-run0 "commit" "-m" "Auto-commit upon emacs exit.")))
 
(defun benj/org-hg-update ()
  (interactive)
  (save-window-excursion
    (find-file "~/.org/")
    (hg-update)))
 
(defun hg-update (&optional repo)
  "Update repository."
  (interactive)
  (hg-view-output ((format "Mercurial: update %s"
			   (hg-abbrev-file-name (hg-root))
			   ))
    (call-process (hg-binary) nil t nil "update")))
 
(add-hook 'kill-emacs-hook 'benj/org-hg-auto-commit)

Et voilà, lors du démarrage d'emacs, un petit M-x gtd met à jour le mercurial et ouvre le fichier .org idoine. Et à la sortie, on commit le tout avec un message standard. Il est cependant possible de commiter avec un messsage personnalisé en executant (benj/org-hg-commit). Elle est pas belle la vie ?

PS: pour la perte de poids je n'ai pas encore trouvé de solution, par contre. /o\