A Clojure library to help you read versioned directories at a specific moment of time. Used internally in Beanstalk. It works with local Subversion and Git repositories as well as regular unversioned directories. VCS support is provided by SVNKit and JGit.
Add the following dependency to your project.clj
file:
[archaeologist "0.1.1"]
Require the core and all needed VCS adapters:
(require '[archaeologist.core :refer :all])
(require '[archaeologist.git :as git])
(require '[archaeologist.subversion :as subversion])
(require '[archaeologist.fs :as fs])
Recursively list files for current mainstream version:
(with-repository [repo (git/open-repository "test/fixtures/git")]
(list-files repo (get-default-version repo)))
; => [{:kind "file", :path "a"} {:kind "file", :path "b"} {:kind "dir", :path "c"} {:kind "file", :path "c/d"} {:kind "file", :path "c/e"} {:kind "dir", :path "c/f"} {:kind "file", :path "c/f/g"}]
Recursively list files in directory:
(with-repository [repo (subversion/open-repository "test/fixtures/svn")]
(list-files repo (get-default-version repo) "c"))
; => [{:kind "dir", :path "f"} {:kind "file", :path "f/g"} {:kind "file", :path "d"} {:kind "file", :path "e"}]
Read a file:
(with-repository [repo (fs/open-repository "test/fixtures/fs")]
(read-file repo (get-default-version repo) "c/f/g"))
; => #<byte[] [B@6c017b07>
By composing these simple operations you should be able to work with versioned directory trees as if they were regular directories. Check out the tests for more usage examples.
Unzip fixtures into test
directory:
unzip test/fixtures.zip -d test
Copyright © 2014 Wildbit, LLC
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.