diff options
-rw-r--r-- | code-review-database | 74 | ||||
-rwxr-xr-x | code-review-start | 77 |
2 files changed, 77 insertions, 74 deletions
diff --git a/code-review-database b/code-review-database new file mode 100644 index 0000000..642f9c4 --- /dev/null +++ b/code-review-database @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +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" + + # TODO: Change to upsert or equivalent + 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" + + create_merge_base "$(current_branch)" "$base" +} + +function get_merge_base () { + local head="$(current_branch)" + local default_base='master' + + if git config remote.origin.url > /dev/null; then + default_base='origin/master' + fi + + sqlite3 "$DATABASE" <<-SQL + BEGIN TRANSACTION; + + SELECT ifnull(max(base), '$default_base') + FROM merge_bases + WHERE head = '$head' + LIMIT 1; + + COMMIT; + SQL +} + +function current_branch () { + git rev-parse --abbrev-ref HEAD +} diff --git a/code-review-start b/code-review-start index 0dc2265..005d612 100755 --- a/code-review-start +++ b/code-review-start @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # TODO: save base branch (default to origin/master) paired with current branch. # Subsequent code-review commands should use this base branch. @@ -7,83 +7,12 @@ # 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" - - # TODO: Change to upsert or equivalent - 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" - - create_merge_base "$(current_branch)" "$base" -} - -function get_merge_base () { - local head="$(current_branch)" - local default_base='master' - - if git config remote.origin.url > /dev/null; then - default_base='origin/master' - fi - - sqlite3 "$DATABASE" <<-SQL - BEGIN TRANSACTION; - - SELECT ifnull(max(base), '$default_base') - FROM merge_bases - WHERE head = '$head' - LIMIT 1; - - COMMIT; - SQL -} - -function current_branch () { - git rev-parse --abbrev-ref HEAD -} +SCRIPT="$(dirname "$0")" +source "$SCRIPT/code-review-database" create_database_if_not_exists - merge_base='origin/master' if [ $# -eq 1 ]; then merge_base="$1" |