From 61158bfa572d2480bfb4e82f33bc212d6fe3e221 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Tue, 1 Jun 2010 03:40:09 -0700 Subject: [PATCH] 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. --- lisp/ChangeLog | 5 +++++ lisp/vc-git.el | 30 +++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d7b6bcd9cb2..a2c62a84a8e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/vc-git.el b/lisp/vc-git.el index 7b740734892..4f67e1b0679 100644 --- a/lisp/vc-git.el +++ b/lisp/vc-git.el @@ -606,14 +606,38 @@ for the --graph option." (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) -- 2.39.2