lib/grit/git-ruby/commit_db.rb (33 lines of code) (raw):
begin
require 'sequel'
module Grit
class CommitDb
SCHEMA_VERSION = 1
attr_accessor :db, :git
def initialize(git_obj, index_location = nil)
@git = git_obj
db_file = File.join(index_location || @git.git_dir, 'commit_db')
if !File.exists?(db_file)
@db = Sequel.open "sqlite:///#{db_file}"
setup_tables
else
@db = Sequel.open "sqlite:///#{db_file}"
end
end
def rev_list(branch, options)
end
def update_db(branch = nil)
# find all refs/heads, for each
# add branch if not there
# go though all commits in branch
# add new commit_branches a
# and commit_nodes for each new one
# stop if reach commit that already has branch and node links
end
def setup_tables
@db << "create table meta (meta_key text, meta_value text)"
@db[:meta] << {:meta_key => 'schema', :meta_value => SCHEMA_VERSION}
@db << "create table commits (id integer, sha text, author_date integer)"
@db << "create table nodes (id integer, path text, type text)"
@db << "create table branches (id integer, ref text, commit_id integer)"
@db << "create table commit_branches (commit_id integer, branch_id integer)"
@db << "create table commit_nodes (commit_id integer, node_id integer, node_sha string)"
end
end
end
rescue LoadError
# no commit db
end