@leno
@citoppig
ということで昨日のやつ(gitのextraheader問題)雑調査しました報告をば (ツリーにあります)
Conversation
Notices
-
xor_zt (xor_zt@molotov.sanrizuka-struggle.com)'s status on Sunday, 01-Sep-2024 14:15:15 JST xor_zt -
xor_zt (xor_zt@molotov.sanrizuka-struggle.com)'s status on Sunday, 01-Sep-2024 14:15:16 JST xor_zt @leno http経由でファイル取得する場合全部に適用されるはず
https://github.com/git/git/blob/4590f2e9412378c61eac95966709c78766d326ba/http.c#L522-L531
こっから追ってくとhttp_copy_default_headers → http_request → http_request_reauth → http_get_file / http_get_strbuf / ...と続くEdit: http.cの方あんまり関係なかったのでツリー読んでくれ
-
れの (leno@don.leno3s.net)'s status on Sunday, 01-Sep-2024 14:15:16 JST れの @xor_zt その理屈だとだとinsteadOfしたときにcloneとls-remoteで可否が変わるの謎じゃない?
-
xor_zt (xor_zt@molotov.sanrizuka-struggle.com)'s status on Sunday, 01-Sep-2024 14:15:16 JST xor_zt @leno 今ソースコード読んで得られた結論です
* バックエンドにcurlを使っていることは両方変わらない
- `ag --cc "repository '%s' not found"` で検索かけるとremote-curl.c:L521しか引っかからない
* cloneの方ではいくつかプロジェクト固有設定の類を飛ばしている
- そもそもグローバルな設定しか見ないみたいな感じ
- https://github.com/git/git/blob/4590f2e9412378c61eac95966709c78766d326ba/builtin/clone.c#L1298
- 対するls-remoteは https://github.com/git/git/blob/4590f2e9412378c61eac95966709c78766d326ba/builtin/ls-remote.c#L118
* またcurl側でもURL側直接指定とダブったときうまく行かないことを確認している
- `curl -v -H "AUTHORIZATION: basic hogefuga" http://yeah:wow@example.com` はbasic hogefugaの方だけが記述されます
- どちらかというとこれが一番影響している可能性が高い (URL自体は同時に指定できているけれども, ヘッダとして指定されたほうが優先されている) -
xor_zt (xor_zt@molotov.sanrizuka-struggle.com)'s status on Sunday, 01-Sep-2024 14:15:16 JST xor_zt * 貰ったログにおいて, httpにスキームが変わっているけど認証系の情報が削られているように見えたのは, transport_anonymize_url関数を通して削除しているため
- https://github.com/git/git/blob/4590f2e9412378c61eac95966709c78766d326ba/remote-curl.c#L521-L522
* つまるところextraheaderの適用有無ではなく, 以下の機序によるものと推測されます
- ls-remoteはローカルリポジトリのconfigを基準に見る
- cloneはグローバルconfigを基準に見る
- ローカルにextraheader設定があった
- curl側で二重指定されているうちextraheader側が優先された
- 認証失敗 + insteadOfは成功In conversation permalink Attachments
-
れの (leno@don.leno3s.net)'s status on Sunday, 01-Sep-2024 14:15:16 JST れの @xor_zt ざっくり理解しました おげ~~~という気持ちになった
In conversation permalink -
xor_zt (xor_zt@molotov.sanrizuka-struggle.com)'s status on Sunday, 01-Sep-2024 14:15:16 JST xor_zt @leno 言われてみればcloneは別にローカルの設定読まないんだよね だからローカル設定で差分が出る + curl側の仕様で優先順位があったという二重苦
In conversation permalink -
れの (leno@don.leno3s.net)'s status on Sunday, 01-Sep-2024 14:15:16 JST れの @xor_zt cloneのそれは言われてみればまあそうだが、curlの方は完全に罠だな
In conversation permalink -
れの (leno@don.leno3s.net)'s status on Sunday, 01-Sep-2024 14:15:17 JST れの 優先的にextraheaderを見に行くタイプのgitのサブコマンド、他にどれだけあるんだろうかと思いつつ、調べる手段をよくわかっていない
In conversation permalink
-