diff options
-rwxr-xr-x | code-review-start | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/code-review-start b/code-review-start new file mode 100755 index 0000000..c5c4ad6 --- /dev/null +++ b/code-review-start @@ -0,0 +1,68 @@ +#!/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" |