# HG changeset patch # User Dan Nicolaescu # Date 1275388809 25200 # Node ID 2ad33f941be270559809e8dd6cdcff115c4ece89 # Parent 1fa0743700cc4177636a244d3bd8cbb80e25b6b0 Add support for vc-log-incoming, improve vc-log-outgoing for Git. * lisp/vc-git.el (vc-git-compute-remote): New function. (vc-git-log-outgoing): Use it instead of hard coding a value. (vc-git-log-incoming): New function. diff -r 1fa0743700cc -r 2ad33f941be2 lisp/ChangeLog --- a/lisp/ChangeLog Tue Jun 01 02:37:49 2010 -0700 +++ b/lisp/ChangeLog Tue Jun 01 03:40:09 2010 -0700 @@ -1,5 +1,10 @@ 2010-06-01 Dan Nicolaescu + Add support for vc-log-incoming, improve vc-log-outgoing for Git. + * vc-git.el (vc-git-compute-remote): New function. + (vc-git-log-outgoing): Use it instead of hard coding a value. + (vc-git-log-incoming): New function. + Improve state updating for VC tag commands. * vc.el (vc-create-tag, vc-retrieve-tag): Call vc-resynch-buffer to update the state of all buffers in the directory. diff -r 1fa0743700cc -r 2ad33f941be2 lisp/vc-git.el --- a/lisp/vc-git.el Tue Jun 01 02:37:49 2010 -0700 +++ b/lisp/vc-git.el Tue Jun 01 03:40:09 2010 -0700 @@ -606,14 +606,38 @@ (when start-revision (list start-revision)) '("--"))))))) +(defun vc-git-compute-remote () + (let ((str (with-output-to-string + (with-current-buffer standard-output + (vc-git--out-ok "symbolic-ref" "HEAD")))) + branch remote) + (if (string-match "^\\(refs/heads/\\)?\\(.+\\)$" str) + (progn + (setq branch (match-string 2 str)) + (setq remote + (with-output-to-string + (with-current-buffer standard-output + (vc-git--out-ok "config" + (concat "branch." branch ".remote"))))) + (when (string-match "\\([^\n]+\\)" remote) + (setq remote (match-string 1 remote))))))) + + (defun vc-git-log-outgoing (buffer remote-location) (interactive) (vc-git-command buffer 0 nil "log" (if (string= remote-location "") - ;; FIXME: this hardcodes the location, it should compute - ;; it properly. - "origin/master..HEAD" + (concat (vc-git-compute-remote) "..HEAD") + remote-location))) + + +(defun vc-git-log-incoming (buffer remote-location) + (interactive) + (vc-git-command + buffer 0 nil + "log" (if (string= remote-location "") + (concat "HEAD.." (vc-git-compute-remote)) remote-location))) (defvar log-view-message-re)