はじめに
本記事は、Atlassian社のStashを使用されている方を対象としています。
※Stashが分からない方は・・、Github社でいうGithub Enterpriseと言えば、分かり易いでしょうか。
GithubにはGithub社が公開しているhubコマンドがあり
GUIの操作を、CUIで実現することができます。
hubコマンドを使用することにより
Githubの画面を都度開かなくても、コマンド一発でプルリクエストを作成したりすることができます。
非常に便利なhubコマンドですが、Atlassian Stashには対応していません。
hubコマンドに慣れると、GUIからの操作が非常に煩わしく感じるため
Atlassian Stashでも使える、hubコマンドのようなものを探したところ
Atlassian Stash Command Line Toolsなるものを発見しました。
※Rubyのgemとして配布されているため、Ruby環境が必須となります
以下、インストール手順や使い方をまとめます。
インストール手順
- Rubyをインストール(本記事では割愛)
- Atlassian Stash Command Line Toolsをインストール
gem install atlassian-stash
- 設定プロンプトを立ち上げて、初期設定を行う
stash configure
* Stash Username: [Stashのユーザ名を入力]
* Stash Password (optional): [Stashのパスワードを入力]
* Stash URL: [StashのルートURLを入力]
* Create a git alias 'git create-pull-request'?: [gitのaliasを設定する場合はyを入力]
使い方
Pull Requestを作成する場合は、先程gitのaliasを設定したので
stashコマンドを直接使用した場合と、gitのaliasから使用した場合を記述します。
個人的には、gitコマンドの補完が使用できる場合は、gitのaliasの方を使用した方がタイプ量が少なくてお勧めです。
- Pull Requestを作成する
- 現在のブランチからmasterへプルリクエストを作成
stash pull-request master
git create-pull-request master
- topicBranchからmasterへプルリクエストを作成し、レビュアーに@michaelを指定
stash pull-request topicBranch master @michael
git create-pull-request topicBranch master @michael
- 現在のブランチからmasterへプルリクエストを作成
- 現在のリポジトリをブラウザで開く
stash browse
- 指定のブランチ(topicBranch)をブラウザで開く
stash browse -b topicBranch
- 現在のリポジトリのコミット一覧をブラウザで開く
stash browse commits
- 現在のリポジトリのプルリクエスト一覧をブラウザで開く
stash browse pull-requests
トラブルシューティング
Pull Requestを作成するgitのaliasを実行した際にエラーが発生する
ホームディレクトリにある.gitconfigの内容を以下のように書き換えます(\を削除)
- create-pull-request = !sh -c 'stash pull-request \\$0'
+ create-pull-request = !sh -c 'stash pull-request $0'
ちょっと便利に
Pull Requestを作成するgitのaliasを実行した際、同時にブラウザの画面を開く
現状、CUIからタイトルや詳細が設定できないので、GUIから編集する必要があります。
この設定をしておくと、作成したPull Requestの画面がすぐに開いて、編集が出来るようなのでお勧めです。
ホームディレクトリにある.gitconfigの内容を以下のように書き換えます(末尾に-oを追加)
- create-pull-request = !sh -c 'stash pull-request $0'
+ create-pull-request = !sh -c 'stash pull-request $0 -o'
終わりに
今回ご紹介した、Atlassian Stash Command Line Toolsは発展途上のツールであり、hubコマンドに比べればまだまだ貧弱です。
しかし、今後も継続して機能追加が行われるようですので、積極的に使用してフィードバックしていきたいと思います。
以下、今後の追加予定の機能です。
- Pull Requestのタイトルや詳細を設定可能に
- 現状、CUIからは設定できないようです。そのため、CUIからPull Request作成後、GUIで再編集を行っています(直後にブラウザを開くように設定しているので、それほど苦ではありませんが、あると嬉しいですね。)
- Pull Requestの詳細をコミットメッセージから生成可能に
- 現状、詳細には何も設定されないようです
- Pull Requestをローカルマシン上にcloneする
- レビュー時に便利な機能ですね
個人的には、Pull Requestを作成せずに、作成する画面が開いてくれれば嬉しいのですが、そのようなコマンドは見当たりませんでした。
もしご存知の方がおられましたら、コメントをお願いします。