背景
https://github.com/newsdict/newsdict.io
や
https://github.com/newsdict/docker_rails
にPRするのがめんどくさいのでコマンド一つで済ませたい
前提
- PR先がいつも同一
- githubを使ってる
- レポジトリを集めたディレクトリがある(prsコマンドのみ)
ディレクトリ構成
+ repositories
+ newsdict.io
+ docker_rails
+ ・・・・
作成するコマンド
コマンド | パス | 実行する場所 | 説明 |
---|---|---|---|
create-pr | ~/bin/create-pr | 対象レポジトリ配下 | 直前のコミットログ名でPRを作成する |
list-pr | ~/bin/list-pr | 対象レポジトリ配下 | PR一覧を見る |
prs | ~/bin/prs | 対象レポジトリの上層ディレクトリ | すべてのPRリストを出す |
コマンドを置くディレクトリを作る
$ mkdir ~/bin
create-pr
$ cat << EOF > ~/bin/create-pr
#!/bin/bash
pr_destination=newsdict
if [ "\$(git status 2> /dev/null)" != "" ];then
project_name=\$(basename \$(pwd))
git_message=(\$(git log -n 1 --oneline | cut -f2- -d' ' | sed 's/ /_/g'))
hub pull-request -b \$pr_destination/\$project_name:master -m "\${git_message[@]}"
else
echo "[ERROR] NOT UNDER GIT" >&2
fi
EOF
$ chmod +x ~/bin/create-pr
list-pr
$ cat << EOF > ~/bin/list-pr
#!/bin/bash
pr_destination=newsdict
pr_src=yubele
if [ -f .git/config ];then
sed -i "s/git@github.com:\$pr_src/git@github.com:\$pr_destination/" .git/config
hub pr list -f"%pC%i%Creset %t | %U%n"
sed -i "s/git@github.com:\$pr_destination/git@github.com:\$pr_src/" .git/config
else
echo "[ERROR] NOT GIT TOP DIR" >&2
fi
EOF
$ chmod +x ~/bin/list-pr
prs
$ cat << EOF > ~/bin/prs
#!/bin/bash
pushd ~/environment
for i in \$(ls);do
if [ -d $i ];then
echo "####" $i
pushd \$i >/dev/null
list-pr 2>/dev/null
popd >/dev/null
fi
done
EOF
$ chmod +x ~/bin/prs
最後に~/binのパスを通す
$ echo 'PATH=$PATH:~/bin' >> ~/.bashrc