2017-05-19 22 views
2

私はCircleCIを使ってAndroid Githubのプライベートプロジェクトを構築しています。ビルドはうまくいきますが、コンテナ上のorigin/masterのコミット履歴はローカルマシン上のものとは異なります。CircleCIコンテナのリポジトリにコミットがありません

私のローカルマシンとコンテナにはdiff/wの出力がgit rev-list origin/masterであり、かなりの違いがあります。つまり、コンテナのリポジトリにコミットがありません。

Githubから自分のローカルマシンにプロジェクトをクローンしてみましたが、同じgitコミット履歴(正しいコミット数)が表示されました。CircleCIは何か違うことをしていますか?

+0

。 CircleCIによって作成されたリビジョンが正しい場合は、それだけです。 CircleCIは、その「origin/master」に触れない、浅いクローンやブランチ固有のフェッチを持つことができます。 – ElpieKay

+0

実際に私のアプリのversionCodeとして、 'git rev-list --first-parent --count origin/master'の出力を使用しているので、私にとって問題です!また、CircleCIがマスターブランチを構築していると確信しています。 – Vibin

+0

詳細情報:私は 'git log --reverse'をコンテナで試しましたが、それは最初のコミットではありません。 – Vibin

答えて

5

CircleCI 1.0は、あなたが見るものを引き起こしている浅いクローンを行います。

Repoを複製する前に、CircleCIは「ソースキャッシュ」が使用可能かどうかを確認します。存在する場合は、それを使用して.git/を再作成します。 CircleCI 1.0では、浅いクローンが実行されます。 CircleCI 2.0(ベータ版)では、標準クローンが実行されます。次に、正しいコミット/タグを取得するための作業が行われます。

あなたはunshallow 1にCircleCI 1.0のリポジトリを変換したい場合は、次のコマンドは、トリックん:私はお勧めしたいので、ソースキャッシュがdependencies相後に1.0に

"[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow" 

保存されますキャッシュを効率的に保つことができるように、このフェーズの後にこれを実行しないでください。 2.0については、save_cacheステップを実行すると保存されます。 `gitのREV-リストの起源/ master`の出力は重要ではありません

-Ricardo Nフェリシアーノ
デベロッパーエバンジェリスト、CircleCI

+1

確認と追加情報をありがとう! – Vibin

1

@ElpieKayはコメントに記載されているように、これはRepoを浅くクローン化するCircleCIと関係があります。完全クローン作成の場合は、circle.yml configの場合はhttps://github.com/prontolabs/pronto/issues/103を参照してください。たとえば、私はしました:

checkout: 
    post: 
     - "[[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]] || git fetch --unshallow" 
関連する問題