わたしはたとえばGitHubの収庫から入手したものは
~/.local/srv/git/gh/{{user/orgname}}/{{reponame}}
に保管しているが
git clone
するときにそれが.../gh/{{user/orgname}}
という経路にいることは
わかるんだから,
$ pwd
.../gh/fvwmorg/
$ git c1 fvwm3 # = 'git://github.com/fvwmorg/fvwm3'
とか打てると嬉しいかも。
pwd | sed -ne 's/.*\/\([^/]\{1,\}\)\/\([^/]\{1,\}\)\/\{0,1\}/\1 \2/p'
検討
git提供方の構造がかなり違う場合がある
GitLabなんかは,その企業専用の用地であっても,「利用者名」に相当する階層構造があるが,git.sv.gnu.org
なんかは,頂上下に一つだけ階層があり,それがいきなりgit台録。まあ,これは「利用者」がいない場合の構造としてはそう不自然ではない。また,この場合は,git.sv.nongnu.org
と分ける,みたいな考えもできるけどそれはこの場合(GNU,非GNUの区別がある)に限られるし,そもそも「変数となる階層名がきっかり二つある」という状況は別にgitの要件でも仕様でもなんでもない。
いやもう,その時は別に手で打てばいいか。
上を受けて
GitHubみたいに変数が二つある場合でも
$ cd ~/.var/srv/git/gh
$ git c1 fvwmorg/fvwm3
と打てると便利じゃないか?
実装としては,まず引数に/
が含まれているか,
そして含まれていれば「2変数かつ2変数指定」
含まれていなければまた場合分け。
そのときは,2段上の階層が短縮語一覧に登録済みか
→違うなら1段上
[alias]
c1test = !printf '!!!%s!!!\\n'
# ↑こうすると実質的に引数を処理できる
c1test = !sh -c 'echo $1' sh
c1test = !sh -c '\
"echo a; echo b\n"\
"pwd; dirname .\n"\
"echo $1"\
' sh
# ↑あるいはこう
# こっちのほうが汎用性高そうだが,「なぜうまくいくのか分からない」
# のでこわい。
gitの構成譜の書式↓
https://git-scm.com/docs/git-config#_syntax
\
で越化されるのは"
と\
自身。