- 投稿日:2020-09-26T18:23:27+09:00
この行がマージされたプルリクを見たい
最近よくコードリーディングをしているので、GitLensを重宝しています。
https://marketplace.visualstudio.com/items?itemName=eamodio.gitlensコミットIDやコミットメッセージを簡単に見られるので、
「なぜこの変更が行われたのか」を確認することができます。神。ただ、この情報だけでは足りず
「このコミットがマージされたプルリクを見たい」となることがあります。
こうなると、
- GitHubで該当のCommitを開く
https://github.com/[user|org]/[repo]/commit/[commit_id]- プルリクへのリンクがあるのでクリック
と確認することになりますが、繰り返していくと面倒になってきます。
そこで、シェルを作りました。git-open-pr#!/bin/bash -eu DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch" | sed "s/.*: //") COMMIT_ID=$(grep -Fxf \ <(git log --first-parent --merges --pretty=format:%H $DEFAULT_BRANCH; echo) \ <(git log --ancestry-path --merges --pretty=format:%H $1..$DEFAULT_BRANCH; echo) \ | tail -n 1) COMMIT_MSG=$(git log $COMMIT_ID -n1 --pretty=format:%s) PR_NO=$(echo $COMMIT_MSG | egrep --only-matching '#\d+') GIT_URL=$(git remote get-url origin) REPO_PATH=${GIT_URL#git@github.com:} REPO_SIGN=${REPO_PATH%.git} open "https://github.com/$REPO_SIGN/pull/${PR_NO#\#}"使い方
- 上記のシェルを
git-open-pr
とか名付けてchmod 744 git-open-pr
(実行権限を付与)- PATHが通っている場所においてください
(私は自作シェル置き場($HOME/bin
など)を作って、
.bash_profile
や.zshrc
にexport PATH=PATH:$HOME/bin
と書いてあります)- 該当のレポジトリでCommit IDを指定して実行
$ git-open-pr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GitHubのプルリクページが一発で開きます
前提
- 多分Macでしか動作しません
- GitHubで「Create a Merge Commit」でマージされたプルリクでないと開けません
- マージコミットのsubjectが
Merge pull request #100 from branch_name
の形式になっていることを利用しています動作確認環境
% sw_vers -productVersion 10.15.6 # Catalina % xcode-select --version xcode-select version 2373. % git --version git version 2.28.0きもち
vscode拡張とか作ってvscode上で完結したいな...
参考
https://ja.stackoverflow.com/questions/12852/特定のコミットに対して-それが対象のブランチへ-どのマージコミットでマージされたかを判定するには
https://git-scm.com/docs/pretty-formats
- 投稿日:2020-09-26T09:21:01+09:00
Macを初期化したらやることメモ
入力設定
システム環境設定/キーボード
* キーボードの種類
* 入力ソース
* caps lockで切替
* ショートカット
karabiner-elements
* complex modifcation/Add rule/import/jaで検索/For Japanese (日本語環境向けの設定)/ escの時英数キーを送信,左シフトを英数,右シフトをかなにするなど
トラックパッド/軌跡を最速にする
clipyfinderを終了できるようにする
$ defaults write com.apple.Finder QuitMenuItem -boolean true $ killall Findervscode
>Shell Command: Install 'code' command in PATH"
plugin例
ccode --install-extension bung87.rails code --install-extension bung87.vscode-gemfile code --install-extension CoenraadS.bracket-pair-colorizer code --install-extension dbaeumer.vscode-eslint code --install-extension donjayamanne.githistory code --install-extension esbenp.prettier-vscode code --install-extension Gruntfuggly.todo-tree code --install-extension kaiwood.endwise code --install-extension mosapride.zenkaku code --install-extension MS-CEINTL.vscode-language-pack-ja code --install-extension ms-vsliveshare.vsliveshare-pack code --install-extension naumovs.color-highlight code --install-extension oderwat.indent-rainbow code --install-extension rebornix.ruby code --install-extension sianglim.slim code --install-extension stylelint.vscode-stylelint code --install-extension vscode-icons-team.vscode-icons code --install-extension vscodevim.vim code --install-extension wingrunr21.vscode-rubysetting.json例
{ "window.zoomLevel": 1, "window.newWindowDimensions": "maximized", "editor.fontSize": 20, "editor.tabSize": 2, "editor.minimap.enabled": false, "terminal.integrated.shellArgs.osx": ["-l"], "terminal.integrated.fontSize": 22, "editor.formatOnPaste": true, "editor.formatOnSave": true, "editor.formatOnType": true, "files.trimTrailingWhitespace": true, "files.insertFinalNewline": true, "workbench.iconTheme": "vscode-icons", "todo-tree.tree.showScanModeButton": false, "vim.useSystemClipboard": true }> Open keyboard shortcuts (JSON)
// Place your key bindings in this file to override the defaults [ { // terminal tab1 -> tab2 "key": "cmd+shift+j", "command": "workbench.action.terminal.focusNext" }, { // terminal tab1 <- tab2 "key": "cmd+shift+k", "command": "workbench.action.terminal.focusPrevious" }, { // new tab "key": "cmd+shift+t", "command": "workbench.action.terminal.newInActiveWorkspace" }, { // close tab "key": "cmd+shift+w", "command": "workbench.action.terminal.kill" }, { // terminal <-> editor "key": "cmd+shift+enter", "command": "workbench.action.terminal.focus" }, { "key": "cmd+shift+enter", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus" } ].zshrc
eval "$(rbenv init -)" HISTSIZE=5000 fpath=(~/.zsh $fpath) if [ -f ${HOME}/.zsh/git-completion.zsh ]; then zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.zsh fi if [ -f ${HOME}/.zsh/git-prompt.sh ]; then source ${HOME}/.zsh/git-prompt.sh fi GIT_PS1_SHOWDIRTYSTATE=true GIT_PS1_SHOWUNTRACKEDFILES=true GIT_PS1_SHOWSTASHSTATE=true GIT_PS1_SHOWUPSTREAM=auto setopt PROMPT_SUBST ; PS1='[%c$(__git_ps1 "(%s)")]\$ ' # alias alias ls=';' alias list='/bin/ls' alias ropen='open "http://localhost:3000"' alias sleep='sudo pmset -a disablesleep 0' alias awake='sudo pmset -a disablesleep 1'homebrew
$ brew update $ brew install git $ brew cask install google-japanese-imegit
$ git config --global credential.helper "cache --timeout=86400" $ git config --global core.editor vim $ git config --global alias.co checkout $ git config --global alias.st status $ git config --global alias.br branch
- 投稿日:2020-09-26T07:26:04+09:00
Macを初期化して綺麗な環境を手に入れるためにやったこと。anyenvは良い
追記
どうもnodeのパスは通っているはずなのだがVSCodeのデバッガーに認識してもらえず泣く泣くnodenvを手放すことになりました。いつか時間のあるときに再挑戦したい。。。
なぜ?
このMacと付き合い始めたのはまだプログラミングとか触り始める前だった。homebrewを使ったり、公式サイトからインストールしたり、bashとzshが混在していたりホームディレクトリにはしょーもないフォルダーが散乱したりしっちゃかめっちゃかな環境にうんざりしていた。
さらに、アルバイトを始めてからというものクソすぎる環境のせいで明らかに業務に支障をきたしていた。何をしたか?
もうOSを再インストールしてしまえと思ったので、実行した。
ただし、また考えなしにアプリをインストールしてもろくなことにならないのは明らかだったので今度は指標を持って環境構築することにした。1. 可能な限りhomebrewを用いること。このように基準を設けることによってどのようにインストールしたのか確認がしやすくなる。
2. bashではなくzshを使う。
3. python,go,nodeなどは全て*env系のパッケージを使って環境を作る。これによって環境構築の手間が減るはず。今回はさらに一歩踏み込んでanyenvを使用した。Pythonはpyenv-virtualenvが超便利なのでpyenv-virtualenvも使う(手順はこちらnodenv,pyenv,ここまできたらgoenvは慣れたものだろう)
4. ホームディレクトリに置くものは可能な限り大きなまとまりで分ける。
5. デスクトップをスッキリさせた。部屋と同じで目につくところがごちゃごちゃすると見えづらいところにもホコリが溜まるはずだからだ。結果
もうとてもハッピー。これでファイルの場所を探して途方に暮れることもないし、毎日の睡眠時間が1時間は増えそう。