背景:タグベースのデプロイを使用しています。 Travisがタグ付きビルドをチェックアウトする方法(--branch=<tagname>
)、gitリポジトリはブランチへのアクセスなしで分離状態になります。しかし、展開のために、私はどのブランチにいるのかを知る必要があります。私の解決策は、 "通常の"クローンを行い、タグ付きコミットに切り替えることです。
答えて
インストール手順でを再度クローンすることができます。そうすることで、リポジトリを2回複製することができますが、動作するようです。
# .travis.yml
install:
- git clone https://github.com/$TRAVIS_REPO_SLUG.git $TRAVIS_REPO_SLUG
- cd $TRAVIS_REPO_SLUG
- git checkout -qf $TRAVIS_COMMIT
既存のシャロークローンを完全なクローンに変換することができます。これを実行するには、インストール手順中にgit fetch --unshallow(gitバージョン1.8.3以降で利用可能)を実行します。彼らはチェックアウトのブランチに属していない場合でも、
# .travis.yml
install:
- git fetch --unshallow --tags
--tagsフラグ軍はすべてのタグをフェッチします。これは、ビルドが他のブランチからのタグにも依存する場合に必要です。
Travisは '--single-branch'を意味する' --depth'でリポジトリをクローンするので動作しません。 'git fetch'はクローンされたブランチだけをフェッチします。 –
問題は、あなたが離れた枝にいるということではありません。 gitではタグを取得できません。git fetch --tags
は、指定したgit clone
コマンドで--branch
で指定されたブランチのみをフェッチします。
私はこれをより詳細に説明しますthis answer。あなたの問題を解決するために
(特定のタグをチェックアウト)レポがクローンされた後、あなたは、このようになりますスクリプトを呼び出すことができます。
# Keep track of where Travis put us.
# We are on a detached head, and we need to be able to go back to it.
build_head=$(git rev-parse HEAD)
# fetch the tags
git config --replace-all remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --tags
# checkout the tagged commit
git checkout -qf <your tag>
# now do your stuff
# go back to where we were at the beginning
git checkout ${build_head}
それともリモートを照会できます。 .travis.yml
に以下を追加します。
env:
global:
# get all the branches referencing this commit
- REAL_BRANCH=$(git ls-remote origin | sed -n "\|$TRAVIS_COMMIT\s\+refs/heads/|{s///p}")
# or check if we are on a particular branch:
- IS_RELEASE=$(git ls-remote origin | grep "$TRAVIS_COMMIT\s\+refs/heads/release$"
(私はGitの達人は既にこの1を思い付くしていなかったことに驚いています)
これは素晴らしいです、ありがとう! – matthewcummings516
実行このビルド時の発信源タグ/枝
へのアクセス権を持っていますその後git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" 1>/dev/null
git fetch origin -q
あなた
BRANCHES=`git branch -a --contains "$TRAVIS_TAG"`
をコミット含む枝を見つけるために、このコマンドを実行することができます
私は、タグが継続的に展開されるように作成された '環境'ブランチを取得するために、長い時間前にスクリプトを作成しました。
それはあなたを刺激する:https://gist.github.com/rolebi/a0eb1f783b7f3a5f21a631c8da1582dc
そのようにそれを使用します。
TARGET_ENV="`test $TRAVIS_TAG && bash scripts/get_branch_for_git_reference.sh $TRAVIS_TAG`"
私はあなたの全体のレポへのアクセスを得るために、あなたは以下を必要とすることがわかった:
install:
- git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
- git fetch --unshallow --tags
こうすることで、リモートブランチやタグにアクセスできるようになります(例えば、チェックアウトを行うこともできます)。
install:
- git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
- git fetch --unshallow --tags
- git symbolic-ref --short HEAD || git checkout -b ${TRAVIS_BRANCH}-test $TRAVIS_BRANCH
注:git symbolic-ref --short HEAD
はあなたがタグにしているが、もはやあなたは(this discussionによる)タグを指す新しいブランチを作成することができデタッチHEAD状態になりたいしない場合
HEAD状態になっていると失敗します。
- 1. Gitのクローン--mirrorそれは</p> <p><code>git clone --mirror [repo-url]</code></p> <p>または</p> <p><code>git clone --mirror --recursive [repo-url]</code></p> <p>はサブモジュールでは動作しませんということですなぜ
- 2. Gitコマンド:git checkout -b <branch><リモートブランチ>とgitブランチ<branch><リモートブランチ>の違いは何ですか?
- 3. トラヴィス-CIトリガーは<code>.travis.yml</code>ファイルがブランチ内に存在する場合、それは意志、
- 4. PGTとPGTIOUの保存CASが生成する
- 5. GIT:</p> <pre><code>$ git pull origin master From https://bitbucket.org/tecgenome/chl-v2.0-html * branch master -> FETCH_HEAD fatal: refusing to merge unrelated histories </code></pre> <p>がどのように回避するか、またはそのエラーメッセージを乗り越えることができます:私は見
- 6. Gitは<<<<<<< HEADをファイルに追加し続けます
- 7. GITが</p> <pre><code>git status # On branch master nothing to commit, working directory clean </code></pre> <p>から始まっ枝
- 8. MongoEngineは、私は、次のMongoEngineドキュメント</p> <pre><code>{ '_id': 'some_id', 'data': 'some_data' } </code></pre> <p>どのように私<code>delete</code>この文書がMongoEngineを使用することができている文書
- 9. 私は「gitのログ」を使用する場合、私はちょうど今</p> <pre><code>git log </code></pre> <p>を入力することができ、それはもはや暗黙的
- 10. Pythonで改行を省略するには?私たちは、これが</p> <pre><code>a = 'strin' b = 2 print str(b)+a </code></pre> <p>を行うことができますどのように多くの方法:
- 11. <pattern>の形式はgit-branchにあります - リスト
- 12. Git、共有リポジトリへの裸の変更方法</p> <pre><code>git init --bare --shared </code></pre> <p>:</p> <pre><code>git init --bare </code></pre> <p>後で私はあなたが複数のユーザーを持つプロジェクトで作業する場合は、この私はそれを行っているべきかであることを学びました:
- 13. マスターから別のブランチにgit変更を適用するにはどうすればよいですか? <li>test1の</li> <li>test2は</li> </ul> <p></li>は今、私はマスターにいくつかの変更を加えなかった</p> <ul> <li>マスター:
- 14. Gitリポジトリ:「+レフリー/ヘッド/ <branch>:レフリー/リモコン/起源/ <branch>」
- 15. githubのエラー:バックアップされます</p> <pre><code>git add . git commit -m "commit details" git push </code></pre> <p>と私のローカルマシン上で私のアプリの最新バージョン:私は私のアプリフォルダから、行うことができるように使用される
- 16. は私が<code>git branch -a</code>を実行すると、私は地元の支店として、それをダウンロードすることができますどのよう<code>remotes/origin/...</code></p> <p>で始まる赤でbranchsがたくさんあるリモコンブランチ
- 17. <iframe>は</p> <p>私は</p> <p>ビデオ、</p> <p>私は再生ボタンをクリックすることができ、埋め込みを見ることができ、ユーチューブのビデオが動作するように-seemsブト
- 18. ファイルハンドラとしてPandasデータフレームを直接読み取る方法はありますか?私は<code>DF.to_csv('temp.csv', sep=',')</code>を使用<code>DF</code>などを書き込むことがパンダで</p> <p><code>DF = pd.read_csv('dataSoruce.csv')</code></p> <p>Iは0</p> <p>次へと欠損値を埋めるように、データをきれいにすることができる:
- 19. なぜgit-ftpはftpサーバ上のファイルを上書きしませんか? (例</p> <pre><code>git ftp push </code></pre> <p>アップロードされたファイルを「#」で私のftpに表示されます:アプリのディレクトリを
- 20. x * 2 + 1を計算する簡単な方法はありますか? <br> <code>x = x*2;</code>が<code>x *= 2;</code></p> <p>のように書くことができます
- 21. はドッカーは私が</p> <pre><code>docker save -o <save image to path> <image name> </code></pre> <p>で画像をエクスポートすることができますが、これはすべての層をパックします
- 22. エラー私は、これは</p> <pre><code>git clone https://go.googlesource.com/go cd go git checkout go1.6.1 cd src ./all.bash </code></pre> <p>を手順に従ってソース</p> <p>から行くインストールしようとしていますソース
- 23. はどのように</p> <pre><code>has_one :company </code></pre> <p>私の要件は、ユーザーがページをサインアップするときに新しい<code>company</code>フォームにリダイレクトするということである
- 24. "git clone ..."の後にコミットオブジェクトはどこにありますか?
- 25. 私はどのようにして、持ち上げられたR.divideに関数を渡すことができますか?これは<code>average</code>のpointfree実装として働く</p> <pre><code>var average = R.lift(R.divide)(R.sum, R.length) </code></pre> <p>どのように来る:
- 26. 私は<code>recyclerView?</code></p> <p>内のすべてのチェックボックスを選択することができますどのようにRecyclerView
- 27. 私はこれを行うことができますか? mysqlの値として(2 <a <8,1,0)なら?
- 28. git checkoutの差分チェックアウト元/ <branch-name>とgit checkout <branch-name>?
- 29. 私はスナップショットが存在しない場合、私は、このスナップショットから</p> </blockquote> <p></p> <blockquote> <p>「暗闇の中で踊る」を得ることができますどのようにこのFireBase DataSnapshot
- 30. 角度2カスタムプロバイダをサービスに挿入するにはどうすればよいですか? <pre><code>let myProvider = provide("message", { useValue: 'Hello' }); bootstrap(AppComponent, [ myProvider ]); </code></pre> <p></p>がどのように私は(別のファイル内にある)私のサービスにこれを挿入することができます
sshでプライベートレポを再クローニングする場合は、 'git clone [email protected]ub.com:$ {TRAVIS_REPO_SLUG} .git'を使用してください。 –