changeset 108844:2ad33f941be2

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.
author Dan Nicolaescu <dann@ics.uci.edu>
date Tue, 01 Jun 2010 03:40:09 -0700
parents 1fa0743700cc
children 9754518b7ea0 d76ca4f45bff
files lisp/ChangeLog lisp/vc-git.el
diffstat 2 files changed, 32 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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  <dann@ics.uci.edu>
 
+	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.
--- 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)