anchor.diff:                (string-limit (substitute #\space #\newline message) 160)
                 rev))))
   
  -(defun lookup-all-svn (message rev-numbers)
  +(defun lookup-all-svn (module message rev-numbers)
     (let ((match-found nil))
       (dolist (rev (remove-duplicates rev-numbers :test #'string=))
         (multiple-value-bind (match regs)
             (ppcre:scan-to-strings "[#r]?(\\d+)" rev)
           (cond
             (match
  -              (let ((subject (retrieve-svn-log (aref regs 0))))
  +              (let ((subject (retrieve-svn-log module (aref regs 0))))
                   (if subject
                       (reply-to message
                                 "svn r~a is ~a https:///trac/changeset/~a"
                                 (aref regs 0) subject (aref regs 0))
                       (reply-to message "SVN r~a doesn't seem to exist" (aref regs 0)))))
             (t
  -           (let ((info (retrieve-svn-last-commit-log rev)))
  +           (let ((info (retrieve-svn-last-commit-log module rev)))
                (if info
                   (reply-to message
                             "~a last modified ~a"
  
positive.code:       ((null revnums)
         (reply-to message "I'd rather have a revision number or path"))
        (t
         (lookup-all-svn message revnums)))))
  
negative.code: 
  (in-package #:orcabot)
  
  (defmodule itasvn itasvn-module ("svn")
    (base-url :accessor base-url-of))
  
  (defmethod initialize-module ((module itasvn-module)
                                config)
    (setf (base-url-of module)
          (or (second (assoc 'itasvn-base-url config))
              "https:///svn/ita/")))
  
  (defun retrieve-svn-log (module rev)
    (let ((log (with-output-to-string (str)
                 (sb-ext:run-program "/usr/bin/svn"
                                     `("log" "-r" ,rev ,(base-url-of module))
                                     :input nil :output str))))
      (ppcre:register-groups-bind (user message)
          ((ppcre:create-scanner "-+\\nr\\d+ \\| (.*) \\| [^(]+\\([^)]+\\) \\| \\d+ lines?\\n\\n(.*?)^-{70,}" :single-line-mode t :multi-line-mode t)
           log)
        (format nil "~a - ~a" user
                (string-limit (substitute #\space #\newline message) 160)))))
  
  (defun retrieve-svn-last-commit-log (module path)
    (let ((log (with-output-to-string (str)
                 (sb-ext:run-program "/usr/bin/svn"
                                     `("log" "--limit" "1"
                                             ,(concatenate 'string (base-url-of module) path))
                                     :input nil :output str))))
      (ppcre:register-groups-bind (rev user message)
          ((ppcre:create-scanner "-+\\nr(\\d+) \\| (.*) \\| [^(]+\\([^)]+\\) \\| \\d+ lines?\\n\\n(.*?)^-{70,}" :single-line-mode t :multi-line-mode t)
           log)
  