# HG changeset patch # User Dan Nicolaescu # Date 1260287817 0 # Node ID 88a0c109936e54b4da4472b61f436b1e904d88d3 # Parent fbfaf7bb384eaef3f914fa5cc215cc92971c49e3 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. diff -r fbfaf7bb384e -r 88a0c109936e lisp/ChangeLog --- 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 + + 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 * play/gomoku.el (gomoku-mode-map): Remap `move-(beginning|end)-of-line' diff -r fbfaf7bb384e -r 88a0c109936e lisp/vc-git.el --- 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))))