Function: vc-arch-trim-find-least-useful-rev
vc-arch-trim-find-least-useful-rev is a byte-compiled function defined
in vc-arch.el.gz.
Signature
(vc-arch-trim-find-least-useful-rev REVS)
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/vc-arch.el.gz
;;; Trimming revision libraries.
;; This code is not directly related to VC and there are many variants of
;; this functionality available as scripts, but I like this version better,
;; so maybe others will like it too.
(defun vc-arch-trim-find-least-useful-rev (revs)
(let* ((first (pop revs))
(second (pop revs))
(third (pop revs))
;; We try to give more importance to recent revisions. The idea is
;; that it's OK if checking out a revision 1000-patch-old is ten
;; times slower than checking out a revision 100-patch-old. But at
;; the same time a 2-patch-old rev isn't really ten times more
;; important than a 20-patch-old, so we use an arbitrary constant
;; "100" to reduce this effect for recent revisions. Making this
;; constant a float has the side effect of causing the subsequent
;; computations to be done as floats as well.
(max (+ 100.0 (car (or (car (last revs)) third))))
(cost (lambda () (/ (- (car third) (car first)) (- max (car second)))))
(minrev second)
(mincost (funcall cost)))
(while revs
(setq first second)
(setq second third)
(setq third (pop revs))
(when (< (funcall cost) mincost)
(setq minrev second)
(setq mincost (funcall cost))))
minrev))