8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

個人開発でもissueやpullrequestを面倒くさがらないような工夫

Last updated at Posted at 2020-11-05

まとめ

次のような関数をつくって、できるかぎり自動化しています。

openissue() {
    branchname=`echo $1 | tr A-Z a-z | sed -e 's/ /-/g'`
    issuenumber=`gh issue create --title $1 --body "" | tail -1 | cut -d / -f7`
    git checkout -b "$branchname#$issuenumber"
}

pullrequest() {
    branch=`git branch --show-current`
    issuenumber=`echo $branch | cut -d# -f2`
    url=`gh pr create --title "$1" --body "Close #$issuenumber"`
    chrome-cli open $url
}

closebranch() {
    currentbranch=`git branch --show-current`
    git checkout master
    git pull origin master
    git push --delete origin $currentbranch
    git branch -d $currentbranch
}

次のように使います。

# タイトルを"Awesome feature"にしてissueを作成。
# awesome-featureブランチにチェックアウト。
openissue "Awesome feature"

# 引数をタイトルにプルリクエストを作成。
# 自動でプルリクエストのページをchromeで開くので、チェック不要ならそのままマージする
# マージすればissueは自動で閉じる
pullrequest "スーパー凄い機能を実装"

# masterブランチに切り替え。
# ローカル、リモートそれぞれのawesome-featureブランチを削除する
closebranch

どうしてもmasterで開発してしまう人に

個人開発をしていると、

  • issueを立て、ブランチを切り替える
  • issue単位で実装を行う
  • プルリクエストを送る
  • プルリクエストをマージする
  • イシューを閉じる

ということを面倒くさがって、masterでとにかくなんでもやってしまうことが多くありました。

しかしコミットの管理や振り返りを考慮すると、上記の流れは個人開発でもきちんとやっておきたい。

そのために面倒な操作をできるかぎり排除してみたのが、上述のシェルです。

工夫のポイント

  • イシューを設定したら、自動でイシュー番号を付与したブランチにチェックアウトする
  • プルリクエストは、イシューを自動で閉じれるような形式で作成する
  • 実装後はfeatureブランチを簡単に捨てられるようにする

次のようにしたことで、(手動で)githubを開いたり、gitコマンドを打ったりすることはなくなりました。

機能開発を並行しないシンプルな開発であれば、これで十分気持ちよくやれると思います。

みなさんはどうしていますか

完全に独自の工夫なので、これが良い方法かどうかは自信がありません。

みなさんは何か工夫していることはありますか。よろしければ教えてください。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?