[解決済み] git サブモジュールに ssh または https 経由で自動的にアクセスする。
質問
質問です。
メインリポジトリと同じ方法(sshまたはhttps)でgitサブモジュールを自動的にチェックアウトする方法はありますか?
背景を説明します。
私たちは、非公開のgitlabリポジトリ(
main
) があり、その中にサブモジュール (
utils
) があり、そのサブモジュールも同じサーバー上の非公開の gitlab リポジトリとしてホストされています。これらのリポジトリには、ssh または https でアクセスすることができます。
-
[email protected]:my/path/repo.git
-
https://gitlabserver.com/my/path/repo.git
両方のバリエーションは明らかに異なる形式の認証を必要とし、クライアントコンピュータとユーザーによって、どちらかが好まれます。
トップレベルのリポジトリに対して (
main
) では、誰でも好きな方法を選択できるので問題ありませんが、サブモジュールでは、これは
.gitmodules
ファイルに依存するため、(初期状態では) すべて同じになります。
今、誰もが .gitmodules ファイルを自分の好みに合わせて、誤って変更をコミットしないようにしなければならない代わりに、サーバーとレポのパスを指定するだけでgitがメインレポに使用するのと同じ方法を選択するか、gitconfigで設定できる方法があるとよいでしょう。
どのように解決するのですか?
私は最終的にこの問題を、サブモジュールのURLを 相対パス :
では、メインの git リポジトリに到達することができるとします。
-
のどちらかを経由して
https://gitlabserver.com/my/path/main.git
-
または
[email protected]:my/path/main.git
そして、その
.gitmodules
ファイルはこのようになります。
[submodule "utils"]
path = libs/utils
url = https://gitlabserver.com/my/path/utils.git
そうすると、メインアプリケーションをsshでチェックアウトしても、サブモジュールのutilsはhttpsでアクセスされることになります。
しかし、このように絶対パスを相対パスに置き換えることができます。
[submodule "utils"]
path = libs/utils
url = ../utils.git
で、これからは
-
どちらかというと
git clone --recursive https://gitlabserver.com/my/path/main.git
-
または
git clone --recursive [email protected]:my/path/main.git
を使えば、どのような方法でもリポジトリ全体の構造を取得することができます。もちろん、相対的なsshとhttpsのパスが同じでない場合にはうまくいきませんが、少なくともgitlabがホストしているリポジトリではそうなっています。
これは、(何らかの理由で)2つの異なるリモートサイトでリポジトリ構造をミラーリングしている場合にも便利です。
関連
-
なぜこのマージが必要なのかを説明するコミットメッセージを git に入力してください。
-
ファイル名が長すぎるため、作業ツリーをチェックアウトできない警告が表示されました。クローンには成功しましたが、チェックアウトに失敗しました。
-
[解決済み] サブモジュールを含む "git clone "の方法は?
-
[解決済み] すべてのgitサブモジュールの最新版を簡単にプルする方法
-
[解決済み] Gitのプッシュを正しく強制する方法は?
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み】Gitによるサブモジュールの再帰的な更新
-
[解決済み】gitlabでパーミッションが拒否される(公開鍵)
-
[解決済み】Gitサブモジュールのアップデート
-
[解決済み】Gitサブモジュールの追加:「gitディレクトリがローカルに見つかりました」問題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
git push は最新の解決策を提供します。
-
Note: Git prompts このリポジトリで別の git プロセスが実行されているようです ....
-
コミットメッセージが空だったため、コミットを中止する git commit
-
なぜこのマージが必要なのかを説明するコミットメッセージを git に入力してください。
-
Git: bash: cd: 引数が多すぎる
-
[解決済み] git diff を stdout に書き出すには?
-
[解決済み] git add --patch' で新しいファイルをインクルードする?
-
[解決済み] GitとSSH、どちらのキーを使うか?
-
[解決済み] gitで、stashを適用せずに、追跡されていないstashedファイルを表示する方法はありますか?
-
[解決済み] Git のプッシュが "non-fast-forward" で拒否されました。