ディレクトリに応じてgitユーザーを切り替える
会社のアカウントでは GitHub 使ってるけど、個人のアカウントでは GitLab.com 使ってる。
プライベートリポジトリが無制限に無料なのでわざわざ GitHub で課金するメリットないし。
こんなとき何も考えずにコード書いてコミットすると、個人用の匿名アカウントでやってるつもりなのに会社の実名アカウントで push
しちゃって、しょうがないから git config
設定しなおして force push
するみたいなことが度々おこる。
.gitconfig
には条件分岐が書けて別のファイルを参照できるので活用すると便利。
~/.gitconfig
ソースコードはすべて golang のディレクトリ構造を採用してるので、以下のように gitlab.com ディレクトリだったら別の gitconfig を参照する指定
[includeIf "gitdir:~/go/src/gitlab.com/"] path = ~/.gitconfig-private
~/.gitconfig-private
[user] name = jnst email = jnst@example.com
GitHubから1ファイルだけ取得する方法
どうにかクローンできないかと調べてたけど GitHub API 使って curl 等から HTTP でダウンロードできた。
プログラムから GitHub リポジトリのファイルを読み込みたいときに便利。
準備
GitHub の OAuthToken が必要。
Personal access tokens のページから Generate new token
して以下の権限にチェックを入れる。
public_repo
read:org
※Organization リポジトリの場合のみ必要
Generate token
して表示されるトークンをコピー。
実行方法
OAuthToken を利用しているので、Public リポジトリだけでなく Private リポジトリからも取得できる。
curl コマンドを使う場合は以下の形式となる。
$ curl -H 'Authorization: token <token>' -H 'Accept: application/vnd.github.v3.raw' -L https://api.github.com/repos/<owner>/<repo>/contents/<path>
<token>
, <owner>
, <repo>
, <path>
の部分を任意の文字列に置き換える。
例えば github.com/jnst/dotfiles の .bashrc
をダウンロードしたいときは
$ curl -H 'Authorization: token XXXXXXXXXXXXXXXXXXXXXXXX' -H 'Accept: application/vnd.github.v3.raw' -L https://api.github.com/repos/jnst/dotfiles/contents/.bashrc # alias alias ll='ls -AlhF' # prompt PS1="\W \u\[\e[1;31m\]$\[\e[00m\] " # history HISTSIZE=5000 HISTFILESIZE=5000 HISTTIMEFORMAT='%Y-%m-%d %T '
また、ブランチ名を指定したいときは末尾に &ref=develop
のように付与すればいい。
Rubyのmaxとmax_byの違い
使い方が異なる。
max
メソッドは比較演算子 <=>
の結果、つまり戻り値は -1
, 0
, 1
のいずれかを返す必要がある。 max_by
は比較したい値を返すだけでよい。
ちなみに max
も max_by
も Enumerable で定義されているメソッドなので Hash に対しても使えるが、上記のように配列展開が必要になって面倒くさいことになる。