2011-06-20 4 views
3

私は、(.hgsubファイルで定義されている)サブリポジトリ機能を使用して依存関係を取り込む、水銀のリポジトリを持っていますが、TeamCityでこれを動作させるのは難しいです。mercurial subrepositoriesの認証

資格情報を保存するためにmercurial_keyring拡張機能を有効にしました。これにより、TeamCityがルートリポジトリの認証の詳細を提供するときに、サブリポジトリ用に覚えています。私ものMercurial.iniする[AUTH]セクションを追加しました:

[auth] 
bitbucket.schemes = https 
bitbucket.prefix = https://bitbucket.org/xyz 
bitbucket.username = xyz 

私は、コマンドラインからHGクローンを実行する場合、私は一度パスワードの入力を要求し、すべてが良います。しかし、初期のチェックアウトはチームシティーを経由して実行が

VCS root: mercurial: https://bitbucket.org/xyz/projectA {instance id=23, parent id=1}, due to error: 'cmd /c hg update -C -r 4a08f587bb1f' command failed. stderr: abort: http authorization required stdout: pulling subrepo src\Common.Library from https://bitbucket.org/xyz/common.library 

で失敗したとき、私は何をしないのですか、私は完全に間違った方法でこのことについてつもり?どうもありがとう!

+0

mercurial.iniファイルにパスワードを保存すると考えましたか?私は彼らが平文で保存されることを知っていますが、あなたが今試しているのと同じことに問題を抱えており、私はちょっとだけ諦めました。私が持っているTeamCityサーバはとにかく安全です(私が願っています)。 –

+0

@Lasse私もそれを試しました。私はまだ同じエラーを受け取ります - それは全く信用証明書を渡していないようです。私はそれを取るあなたはこれを働いているが...あなたは私が行方不明かもしれない何かを考えることができますか?ありがとう! –

+0

右のmercurial.iniファイルに設定しましたか?TeamCityエージェントを実行しているユーザーの設定ですか? –

答えて

3

TeamCityから直接資格情報を渡すのがmercurial_keyringでは機能しないようですが、mercurial.iniファイルのプレーンテキストでユーザー名とパスワードの両方を指定すると(TeamCityビルドエージェントが実行中のアカウントでアクセス可能になっていることを確認してください)下)、これは動作します。

mercurial.iniファイルは、ユーザーパスの下で動作しない場合、<mercurial install path>\mercurial.iniの下に置くことができます。

解決策はありません...もし誰かがより良いものを見つけたら、私に教えてください。

0

それはチームシティーの最後のバージョンが、私のために、次の作品に固定してしまったことがある:

  1. HGリポジトリへ アクセス(根とsubrepos両方)
  2. を持つドメインアカウントで実行するように設定ビルドエージェントサービス
  3. は、ビルドエージェントにmercurial_keyringを有効にして、 パスワードを入力し、手動でリポジトリのクローンを作成してみ水銀設定に
  4. [auth]セクション を追加します。レポが複製されるまで待つ必要はありません。「すべての変更を要求しています」というメッセージが表示されたら、 を終了させることができます。
  5. お楽しみください - 今サービスではキーリングが使用されます。
0

おそらく[auth]セクションでは、TCエージェントのmercurial.iniに一切追加しないでください。チームシティは--config auth...オプションをhgに使用しています。 mercurial_keyringを使用せずに、VCSルートのユーザー名とパスワードを設定することもお勧めします。これは安全で、異なるTCエージェント間で共有されます。

ビットバケットについてはわかりませんが、httpsスキームの使用で証明書の設定が必要な場合があります。これはmercurial.iniで設定することができます。

[web] 
cacerts = 

[hostfingerprints] 
# hides mercurial warnings 
domain-name = ab:cd:...:01 

そして最後の部分:.hgsubに応じて、チームの市バージョン管理設定で「自動的にエージェントの」VCSのチェックアウトモードを使用するために必要になる場合があります。