                      (cl-return)))
                (puthash local-repo t repos-to-rebuild)
                (puthash package t packages-to-rebuild)
-               (print! (success "\033[K(%d/%d) %s updated (%s -> %s)")
+               (print! (success "\033[K(%d/%d) %s: %s -> %s%s")
                        i total local-repo
                        (doom--abbrev-commit ref)
-                       (doom--abbrev-commit target-ref))
+                       (doom--abbrev-commit target-ref)
+                       (if (and (integerp commits) (> commits 0))
+                           (format " [%d commit(s)]" commits)))
                (unless (string-empty-p output)
+                 (let ((lines (split-string output "\n")))
+                   (setq output
+                         (if (> (length lines) 20)
+                             (concat (string-join (cl-subseq (butlast lines 1) 0 20) "\n")
+                                     "\n[...]")
+                           output)))
                  (print-group! (print! "%s" (indent 2 output)))))
            (user-error
             (signal 'user-error (error-message-string e)))

                   (target-ref
                    (cdr (or (assoc local-repo pinned)
                             (assoc package pinned))))
                   output)
               (or (cond
                    ((not (stringp target-ref))

                            (straight-vc-commit-present-p recipe target-ref)))
                     (straight-vc-check-out-commit recipe target-ref)
                     (or (not (eq type 'git))
                         (setq output (doom--commit-log-between ref target-ref)
                               commits (length (split-string output "\n" t))))
                     (doom--same-commit-p target-ref (straight-vc-get-commit type local-repo)))

                    ((print! (start "\033[K(%d/%d) Re-cloning %s...") i total local-repo esc)
