                           changes (map strip+- diff-lines)
                           filename (trim (first all-lines))]
                       (if (some matching-line-in? changes) filename)))))))
-
-;; Return a newest-first sequence of revision numbers in which the object
-;; changed.
-
-(defn revlist [object]
-  (let [logstream (java.io.ByteArrayInputStream. (.getBytes (log object)))]
-    (for [e (try
-              (xml-seq (parse logstream))
-              (catch Exception e (errmsg)))
-          :when (seq (:attrs e))]
-    (:revision (:attrs e)))))
 
 ;; Return a sequence of revision pairs for potential comparison -- e.g. for the
 ;; revlist (9 8 6 4 1), return (8 9 6 8 4 6 1 4).

  (println "- Your valid svn authentication credentials are not cached.")
  (println))

;; Return a string containing the xml-formatted svn log for the requested
;; object.

(defn log [object]
  (print "Fetching log...")
  (flush)
  (let [log (:out (sh "svn" "log" shhh "--stop-on-copy" "--xml" object))]
    (println)
    log))



;; Print usage information.

(defn usage [summary code]
  (println (str "\nUsage: revdiff [options] object [regexp]\n\n  Options:\n"))
  (println (str summary "\n"))
  (println "  object: svn URI or name of versioned object in working-copy")
  (println "  regexp: only show diffs where a changed line matches regexp\n")
  (System/exit code))

;; If object is a uri, the "-rn:m" revision-range format will not work if object
;; is no longer present in the head revision, in which case we have to use the
