{台録(ダイロク)}{〈GitHub〉}{〈GitLab〉}{~/.local/srv/git/gh/}{仕類即譜からGitの構成譜に適した形式に変換する}{〈Git〉}{pwd}{Gitの構成譜}{Gitにおける別名}{台録構造}...=}(14)

{台録を認識して,cloneする引数の省略を補えるようにする K#D657/30EE}

わたしはたとえば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
\で越化されるのは"\自身。

{〈GitLab〉}

{}