changeset 106492:88a0c109936e

Add support for stashing a snapshot of the current tree. * vc-git.el (vc-git-stash-snapshot): New function. (vc-git-stash-map, vc-git-extra-menu-map): Add a mapping for it.
author Dan Nicolaescu <dann@ics.uci.edu>
date Tue, 08 Dec 2009 15:56:57 +0000
parents fbfaf7bb384e
children e2e186a38058
files lisp/ChangeLog lisp/vc-git.el
diffstat 2 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Dec 08 11:27:53 2009 +0000
+++ b/lisp/ChangeLog	Tue Dec 08 15:56:57 2009 +0000
@@ -1,3 +1,9 @@
+2009-12-08  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	Add support for stashing a snapshot of the current tree.
+	* vc-git.el (vc-git-stash-snapshot): New function.
+	(vc-git-stash-map, vc-git-extra-menu-map): Add a mapping for it.
+
 2009-12-08  Jose E. Marchesi  <jemarch@gnu.org>
 
 	* play/gomoku.el (gomoku-mode-map): Remap `move-(beginning|end)-of-line'
--- a/lisp/vc-git.el	Tue Dec 08 11:27:53 2009 +0000
+++ b/lisp/vc-git.el	Tue Dec 08 15:56:57 2009 +0000
@@ -414,6 +414,7 @@
     (define-key map "\C-m" 'vc-git-stash-show-at-point)
     (define-key map "A" 'vc-git-stash-apply-at-point)
     (define-key map "P" 'vc-git-stash-pop-at-point)
+    (define-key map "S" 'vc-git-stash-snapshot)
     map))
 
 (defvar vc-git-stash-menu-map
@@ -756,8 +757,11 @@
     (define-key map [git-grep]
       '(menu-item "Git grep..." vc-git-grep
 		  :help "Run the `git grep' command"))
+    (define-key map [git-sn]
+      '(menu-item "Stash a snapshot" vc-git-stash-snapshot
+		  :help "Stash the current state of the tree and keep the current state"))
     (define-key map [git-st]
-      '(menu-item "Stash..." vc-git-stash
+      '(menu-item "Create Stash..." vc-git-stash
 		  :help "Stash away changes"))
     (define-key map [git-ss]
       '(menu-item "Show Stash..." vc-git-stash-show
@@ -863,6 +867,17 @@
   (vc-git-command "*vc-git-stash*" 0 nil "stash" "pop" "-q" name)
   (vc-resynch-buffer (vc-git-root default-directory) t t))
 
+(defun vc-git-stash-snapshot ()
+  "Create a stash with the current tree state."
+  (interactive)
+  (vc-git--call nil "stash" "save"
+		(let ((ct (current-time)))
+		  (concat
+		   (format-time-string "Snapshot on %Y-%m-%d" ct)
+		   (format-time-string " at %H:%M" ct))))
+  (vc-git-command "*vc-git-stash*" 0 nil "stash" "apply" "-q" "stash@{0}")
+  (vc-resynch-buffer (vc-git-root default-directory) t t))
+
 (defun vc-git-stash-list ()
   (delete
    ""
@@ -882,7 +897,7 @@
 (defun vc-git-stash-delete-at-point ()
   (interactive)
   (let ((stash (vc-git-stash-get-at-point (point))))
-    (when (y-or-n-p (format "Remove stash %s ?" stash))
+    (when (y-or-n-p (format "Remove stash %s ? " stash))
       (vc-git--run-command-string nil "stash" "drop" (format "stash@%s" stash))
       (vc-dir-refresh))))