47

次のエラーで git サブモジュールを更新できません。

$ git submodule init
Submodule 'build/html' (git@github.com:quadroid/clonejs.git) registered for path 'build/html'
...
$ git submodule update
Cloning into 'build/html'...
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

しかし、ローカルで同じタスクを実行すると、すべて問題ありません。

Travis CI ビルドが成功し、レポ内のサブモジュールをクリックしてそこに移動できるようにするにはどうすればよいですか?

4

6 に答える 6

24

サブモジュールにはスキームを使用することをお勧めしhttpsます。これにより、Travis をプルしてローカルにプッシュできるようになりますhttps://github.com/quadroid/clonejs.git

于 2013-06-16T13:30:56.533 に答える
13

Travis は、ssh を使用したサブモジュールへのアクセスをサポートするようになりました。これは、最も簡単なソリューションです。プライベート依存関係のドキュメントで説明されているように、ssh キー (または専用の CI ユーザーの ssh キー) をビルドしている Github プロジェクトに関連付けるだけです。

$ travis sshkey --upload ~/.ssh/id_rsa -r myorg/main

独自の ssh キーを使用する必要がないように、専用ユーザーを作成することを Travis が推奨していることに注意してください。

于 2014-08-25T19:01:21.273 に答える
7

サブモジュールを ssh-urls 経由で指定したため、このエラーが発生します。travis-ci 環境から ssh アクセスするには、キーを設定する必要があります。

または、プロジェクトとサブモジュールはすべて Github で利用できるため、git サブモジュールに相対 URL を使用することもできます。

Git は に対して相対 URL を解決しORIGINます。

例:

あなたの最初の2つのエントリを使用して.gitmodules

[submodule "lib/es5-shim"]
        path = lib/es5-shim
        url = git@github.com:kriskowal/es5-shim.git
[submodule "build/html"]
        path = build/html
        url = git@github.com:quadroid/clonejs.git

相対 URL に置き換え:

[submodule "lib/es5-shim"]
        path = lib/es5-shim
        url = ../../kriskowal/es5-shim.git
[submodule "build/html"]
        path = build/html
        url = ../clonejs.git

次に、たとえば、https 経由でクローンを作成すると、オリジンは次のように設定されます。

$ git clone https://github.com/quadroid/clonejs.git
$ cd clonejs
$ git remote -v
origin  https://github.com/quadroid/clonejs.git (fetch)
origin  https://github.com/quadroid/clonejs.git (push)

ssh 経由でクローンを作成する場合:

$ git clone git@github.com:quadroid/clonejs.git
$ cd clonejs
$ git remote -v                                
origin  git@github.com:quadroid/clonejs.git (fetch)
origin  git@github.com:quadroid/clonejs.git (push)

相対 URL を使用すると、通常のサブモジュール シーケンスはオリジンとは無関係に機能します。

$ git submodule init
$ git submodule update
于 2015-04-23T22:22:44.347 に答える
1

を介して .gitmodules ファイルを直接操作することもできますgit(この回答に触発されました)。

git config --file=.gitmodules submodule.SUBMODULE_PATH.url https://github.com/ORG/REPO.git
于 2017-02-14T15:11:27.053 に答える