Git初期設定スクリプト
投稿:2022-05-07
ちょっと前にGitというコードを巻き戻せるツールを知りました。 隣のディレクトリにバックアップさせておけば、陶芸家が焼いたお皿が失敗したときに地面に叩きつけて割る感じに巻き戻せます。 う~ん、Gitは皆さんのほうが詳しいので省略。 これで管理するプロジェクトが3個目になるとGitの初期化が面倒になってきました。 面倒なことはスクリプトに書いておき、今後の初期化作業はスクリプトを実行すれば済む訳です。
プロジェクトのディレクトリ、バックアップ用ディレクトリを設定できます。 セットアップを実行すると、
- パックアップ用ディレクトリを作る
- 共有リポジトリに初期化
- プロジェクトのディレクトリをGitで初期化
- 共有リポジトリ宛にpushするよう設定
- 全ファイルをコミット、コメントは「最初のコミット」
- 共有リポジトリにpush
せっかくだからスクリプトでメニュー選択や色表示をやってみました(面白いなコレ)。
スクショを撮ってみました。 new_projectというディレクトリにプロジェクトがあり、バックアップ用にnew_repositoryを作ります。 プロジェクトのディレクトリがなかったり、バックアップ用のディレクトリが既にある場合をチェックして実行を止めます。
こんな感じ。 頭にメールアドレスとユーザー名があるので万が一使う人がいたら適宜変更してください。
#!/bin/bash
email="lemorin@lemorin.jp"
user="lemorin"
function color_setup() {
color_red="\e[91m"
color_green="\e[92m"
color_reset="\e[0m"
}
function disp_menu() {
execute_ok=""
local msg=""
if [ "" = "$dir_project" ]; then
msg="プロジェクトのディレクトリが設定されていません"
elif [ ! -d "$dir_project" ]; then
msg="プロジェクトのディレクトリがありません"
elif [ "" = "$dir_repository" ]; then
msg="リポジトリのディレクトリが設定されていません"
elif [ -d "$dir_repository" ]; then
msg="リポジトリのディレクトリが既にあります"
else
msg="セットアップできます"
execute_ok="ok"
fi
echo "***** メニュー *****"
local color_s
if [ "" != "$dir_project" -a -d "$dir_project" ]; then
color_s=$color_green
else
color_s=$color_red
fi
echo -e "p プロジェクト$color_s[$dir_project]$color_reset"
if [ "" != "$dir_repository" -a ! -d "$dir_repository" ]; then
color_s=$color_green
else
color_s=$color_red
fi
echo -e "r リポジトリ $color_s[$dir_repository]$color_reset"
if [ "ok" = "$execute_ok" ]; then
color_s=$color_green
else
color_s=$color_red
fi
echo -e "${color_s}s$color_reset セットアップ"
echo "q 終了"
if [ "ok" = "$execute_ok" ]; then
color_s=$color_green
else
color_s=
fi
echo -e "$color_s$msg$color_reset"
echo -n "選択> "
read menu_sel
}
function ask_directory() {
local query="$1"
echo -n "$query> "
read directory
}
function setup_git() {
echo "アカウント共通のgit設定"
git config --global push.default matching
git config --global user.email "$email"
git config --global user.name "$user"
echo "リポジトリ側"
echo "ディレクトリ作成 $dir_repository"
mkdir "$dir_repository"
dir_repo_abs=$(cd $dir_repository && pwd)
cd "$dir_repository"
echo "git初期化"
git init --bare --share
cd ..
echo "プロジェクト側"
cd "$dir_project"
echo "git初期化"
git init
git add --all
git commit --message="最初のコミット"
git remote add origin "$dir_repo_abs"
git push --set-upstream origin master
cd ..
}
color_setup
echo -e "${color_green}Gitセットアップ$color_reset"
dir_project=""
dir_repository=""
execute_ok=""
menu_sel=""
while [ "q" != "$menu_sel" ]
do
disp_menu
if [ "p" = "$menu_sel" ]; then
ask_directory "プロジェクトのディレクトリ"
dir_project="$directory"
elif [ "r" = "$menu_sel" ]; then
ask_directory "リポジトリのディレクトリ"
dir_repository="$directory"
elif [ "s" = "$menu_sel" -a "ok" = "$execute_ok" ]; then
echo -e "${color_green}セットアップ実行$color_reset"
setup_git
menu_sel="q"
fi
done
echo -e "${color_green}終了$color_reset"