]> code.delx.au - gnu-emacs/commitdiff
Add support for stashing a snapshot of the current tree.
authorDan Nicolaescu <dann@ics.uci.edu>
Tue, 8 Dec 2009 15:56:57 +0000 (15:56 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Tue, 8 Dec 2009 15:56:57 +0000 (15:56 +0000)
* vc-git.el (vc-git-stash-snapshot): New function.
(vc-git-stash-map, vc-git-extra-menu-map): Add a mapping for it.

lisp/ChangeLog
lisp/vc-git.el

index 67f5bab1d81430dacfd94142269c8f4695234a23..269e28a63e95ee305686d106f248318759f3d8d1 100644 (file)
@@ -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'
index 635c9d7cef92f83d8df616211f920dc246ea224c..69e861434bad2bb89ff25ff7ddbe3ac6668194f9 100644 (file)
@@ -414,6 +414,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
     (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 @@ or BRANCH^ (where \"^\" can be repeated)."
     (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 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
   (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 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
 (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))))