     (let ((default-directory git-timemachine-directory)
           (file git-timemachine-file))
      (with-temp-buffer
-      (unless (zerop (process-file vc-git-program nil t nil "--no-pager" "log" "--name-only" "--follow" "--pretty=format:%H:%ar:%ad:%s" file))
+
+      (unless (zerop (if git-branch
+                      (process-file vc-git-program nil t nil "--no-pager" "log" git-branch "--name-only" "--follow" "--pretty=format:%H%x00%ar%x00%ad%x00%s%x00%an" "--" file)
+                      (process-file vc-git-program nil t nil "--no-pager" "log" "--name-only" "--follow" "--pretty=format:%H%x00%ar%x00%ad%x00%s%x00%an" "--" file)))
        (error "Git log command exited with non-zero exit status for file: %s" file))
+
       (goto-char (point-min))
       (let ((lines)
             (commit-number (/ (1+ (count-lines (point-min) (point-max))) 3)))
        (while (not (eobp))
         (let ((line (buffer-substring-no-properties (line-beginning-position) (line-end-position))))
-         (string-match "\\([^:]*\\):\\([^:]*\\):\\(.*\\):\\(.*\\)" line)
+         (string-match "\\([^\0]*\\)\0\\([^\0]*\\)\0\\([^\0]*\\)\0\\(.*\\)\0\\(.*\\)" line)
          (let ((commit (match-string 1 line))
                (date-relative (match-string 2 line))
                (date-full (match-string 3 line))
-               (subject (match-string 4 line)))
+               (subject (match-string 4 line))
+               (author (match-string 5 line)))
           (forward-line 1)
           (let ((file-name (buffer-substring-no-properties (line-beginning-position) (line-end-position))))
-           (push (list commit file-name commit-number date-relative date-full subject) lines))))
+           (push (list commit file-name commit-number date-relative date-full subject author) lines))))
         (setq commit-number (1- commit-number))
         (forward-line 2))
        (nreverse lines))))

   (funcall mode)
   (setq git-timemachine-directory git-directory
         git-timemachine-file (file-relative-name file-name git-directory)
         git-timemachine-revision nil)
   (git-timemachine-show-current-revision)
   (goto-char (point-min))
   (forward-line (1- cur-line))
   (git-timemachine-mode))))

(provide 'git-timemachine)

;;; git-timemachine.el ends here


(defun git-timemachine--show-minibuffer-details (revision)
 "Show details for REVISION in minibuffer."
 (let* ((date-relative (nth 3 revision))
        (date-full (nth 4 revision))
        (author (if git-timemachine-show-author (concat (nth 6 revision) ": ") ""))
        (sha-or-subject (if (eq git-timemachine-minibuffer-detail 'commit) (car revision) (nth 5 revision))))
  (message "%s%s [%s (%s)]"
   (propertize author 'face 'git-timemachine-minibuffer-author-face)
   (propertize sha-or-subject 'face 'git-timemachine-minibuffer-detail-face) date-full date-relative)))

(defun git-timemachine-abbreviate (revision)
 "Return REVISION abbreviated to `git-timemachine-abbreviation-length' chars."
