tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【git】submodule updateでfailed & 毎回パスワード聞かれる問題

はじめに

とあるrepositoryにsubmoduleを複数使っていて、
git submodule updateをしたかったのですが
以下の2つで困ったのでメモ

  • 毎回パスワードを聞かれる
  • ID/pass入力でfatal: Authentication failedしてしまう

アジェンダ

  1. 起こったこと
  2. 対応したこと

1. 起こったこと

冒頭に記載したまんまですが、

  • 毎回パスワードを聞かれる
  • ID/pass入力でfatal: Authentication failedしてしまう

が起こっていました。

このときの状態

このときの状態は以下のようになっていました。

$ vim .gitmodules
-- vi --
[submodule "template/a"]
  path = template/a
  url = https://github.com/hoge/template-a.git
[submodule "template/b"]
  path = template/b
  url = https://github.com/hoge/template-b.git
[submodule "template/c"]
  path = template/c
  url = https://github.com/hoge/template-c.git
--------

実行したとき

3回ID/passが聞かれた上にfailedしました。

$ git submodule update
Cloning into '/Users/tweeeety/github/any-repos/template/a'...
Username for 'https://github.com': tweeeety
Password for 'https://tweeeety@github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/hoge/template-a.git/'
fatal: clone of 'https://github.com/hoge/template-a.git' into submodule path '/users/tweeeety/github/mercari/any-repos/template/a' failed
failed to clone 'template/a'. Retry scheduled
Cloning into '/Users/tweeeety/github/mercari/any-repos/template/a'...

~ 省略 ~

2. 対応したこと

対応としては.gitmodulesのurl指定をhttps指定からssh指定に変えました。

こんな感じですね

$ git diff .gitmodules

--- a/.gitmodules
+++ b/.gitmodules

 [submodule "template/a"]
        path = template/a
-       url = https://github.com/hoge/template-a.git
+       url = git@github.com:hoge/template-a.git
 [submodule "template/b"]
        path = template/b
-       url = https://github.com/hoge/template-b.git
+       url = git@github.com:hoge/template-b.git
 [submodule "template/c"]
        path = template/c
-       url = https://github.com/hoge/template-c.git
+       url = git@github.com:hoge/template-c.git

.git/config 内のsubmoduleの向き先は
この時点では変わらないので以下を実行します

$ git submodule sync

で、実行してみるとうまくいきましたとさ

$ git submodule update
Cloning into '/Users/tweeeety/github/any-repos/template/a'...
Cloning into '/Users/tweeeety/github/any-repos/template/b'...
Cloning into '/Users/tweeeety/github/any-repos/template/c'...
Submodule path 'template/a': checked out 'xxxxxxxxxxae935311265746382d1b54b4e2ab0f'
Submodule path 'template/b': checked out 'xxxxxxxxxx2b91a43b8a318f491348aa62b5306f'
Submodule path 'template/c': checked out 'xxxxxxxxxxa378276a71869ef3a63cdb3bb7b2c9'

おわり

httpsだとなんでダメなんや...
というところはあやふやにしてしまいましたが、
一旦次行きたいのでメモのみで!!\(^o^)/