20200926のMacに関する記事は3件です。

この行がマージされたプルリクを見たい

最近よくコードリーディングをしているので、GitLensを重宝しています。
https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

コミットIDやコミットメッセージを簡単に見られるので、
「なぜこの変更が行われたのか」を確認することができます。神。

ただ、この情報だけでは足りず
「このコミットがマージされたプルリクを見たい」となることがあります。
こうなると、

  1. GitHubで該当のCommitを開く
    https://github.com/[user|org]/[repo]/commit/[commit_id]
  2. プルリクへのリンクがあるのでクリック

と確認することになりますが、繰り返していくと面倒になってきます。
そこで、シェルを作りました。

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#\#}"

使い方

  1. 上記のシェルを git-open-pr とか名付けて
  2. chmod 744 git-open-pr(実行権限を付与)
  3. PATHが通っている場所においてください
    (私は自作シェル置き場($HOME/binなど)を作って、
    .bash_profile.zshrcexport PATH=PATH:$HOME/binと書いてあります)
  4. 該当のレポジトリで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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macを初期化したらやることメモ

入力設定

システム環境設定/キーボード
 * キーボードの種類
 * 入力ソース
 * caps lockで切替
 * ショートカット
karabiner-elements
 * complex modifcation/Add rule/import/jaで検索/For Japanese (日本語環境向けの設定)/ escの時英数キーを送信,左シフトを英数,右シフトをかなにするなど
トラックパッド/軌跡を最速にする
clipy

finderを終了できるようにする

$ defaults write com.apple.Finder QuitMenuItem -boolean true
$ killall Finder

vscode

>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-ruby

setting.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-ime

git

$ 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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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時間は増えそう。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む