           (inhibit-point-motion-hooks t)
           (inhibit-modification-hooks t))
       (when (not info)
-        (let ((color (pop git-blame-colors)))
-          (unless color
-            (setq color git-blame-ancient-color))
+	;; Assign a random color to each new commit info
+	;; Take care not to select the same color multiple times
+	(let ((color (if git-blame-colors
+			 (git-blame-random-pop git-blame-colors)
+		       git-blame-ancient-color)))
           (setq info (list hash src-line res-line num-lines
                            (git-describe-commit hash)
                            (cons 'color color))))

;; License:    GPL
;; Keywords:   git, version control, release management
;;
;; Compatibility: Emacs21


;; This file is *NOT* part of GNU Emacs.
;; This file is distributed under the same terms as GNU Emacs.

  "Recalculate all blame information in the current buffer"
  (interactive)
  (unless git-blame-mode
    (error "Git-blame is not active"))

  (git-blame-cleanup)
  (git-blame-run))
