anchor.diff:  
   (in-package #:orcabot)
   
  -(defmodule itasvn itasvn-module ("svn"))
  +(defmodule itasvn itasvn-module ("svn")
  +  (base-url :accessor base-url-of))
   
  -(defun retrieve-svn-log (rev)
  +(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 "https:///svn/ita/")
  -                                    :input nil :output 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 (path)
  +(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"
  -                                            ,(format nil "https:///svn/ita/~a" path))
  -                                    :input nil :output 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)
  
positive.code:               (string-limit (substitute #\space #\newline message) 160)
                rev))))
  
  (defun lookup-all-svn (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))))
                  (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)))
               (if info
                  (reply-to message
                            "~a last modified ~a"
  
negative.code:                                          :case-insensitive-mode t)
                     (second (arguments message)) 0
                     :sharedp t))
      (let ((subject (retrieve-svn-log module revnum)))
        (when subject
            (reply-to message
                      "svn r~a is ~a [https:///trac/changeset/~a]"
  