#!/usr/bin/env bash # TODO: save base branch (default to origin/master) paired with current branch. # Subsequent code-review commands should use this base branch. # TODO: think about renaming this to "init" if there's no corresponding "end" # subcommand. GIT_ROOT="$(git rev-parse --show-toplevel)" DATABASE="${GIT_ROOT}/.git/info/code-review.sqlite" function create_database () { sqlite3 "$DATABASE" <<-SQL BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS merge_bases ( id INTEGER PRIMARY KEY, head TEXT NOT NULL, base TEXT NOT NULL ); COMMIT; SQL } function create_database_if_not_exists () { if [ ! -f "$DATABASE" ]; then create_database fi } function create_merge_base () { local head="$1" local base="$2" sqlite3 "$DATABASE" <<-SQL BEGIN TRANSACTION; INSERT INTO merge_bases (head, base) VALUES ( '$head', '$base' ); COMMIT; SQL } function create_merge_base_from_current () { local base="$1" local current_branch=$(git rev-parse --abbrev-ref HEAD) create_merge_base "$current_branch" "$base" } create_database_if_not_exists merge_base='origin/master' if [ $# -eq 1 ]; then merge_base="$1" fi create_merge_base_from_current "$merge_base"