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" | 
