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.
(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)