ghq + peco を使い始めたけど、既存 git ディレクトリを ghq get し直して回るのは面倒くさいし git clone するのに時間がかかるので、簡単なシェルスクリプトを3分クッキングして ghq ディレクトリ形式(正確には go get 由来)に mv するようにした。
ghq-mv.sh
使い方はこんなかんじ
xargs と組み合わせて git ディレクトリを全部一気に移動した。対象になったものが .git を持つディレクトリでない場合は無視されて、git ディレクトリだけが移動される。
1回使ったらもう使わないので捨ててもらって構わない。
ghq-mv.sh
#!/bin/bash
# Usage: ghq-mv.sh target_dir ghq_root_dir
target=$1 if [ -z "$2" ]; then ghq_root=$HOME/src else ghq_root=$2 fi if [ -d "$target/.git" ]; then cd $target url=$(git remote -v | grep origin | head -1 | awk '{print $2}') basename=$(basename ${url%.*}) dirname=$(dirname $url | sed 's!git@\([^:]*\):!\1/!' | sed 's!https://!!' | sed 's!git://!!') cd - mkdir -p $ghq_root/$dirname echo "mv $target $ghq_root/$dirname/$basename" mv $target $ghq_root/$dirname/$basename
fi
使い方はこんなかんじ
$ bash ghq-mv.sh 対象ディレクトリ {ghq root ディレクトリ}
xargs と組み合わせて git ディレクトリを全部一気に移動した。対象になったものが .git を持つディレクトリでない場合は無視されて、git ディレクトリだけが移動される。
$ cd ~/gitrepos
$ \ls | xargs -I{} bash ghq-mv.sh {} ~/src