Ссылка на текущую ветку в github readme.md
В моем файле github repo readme.md у меня есть значок Travis-CI. Я использую следующую ссылку:
https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=staging
Очевидная проблема заключается в том, что ветвь жестко запрограммирована. Можно ли использовать какую-то переменную, чтобы ветвь просматривалась в данный момент?
Ответы
Ответ 1
Не то, что я знаю из.
Поддержка GitHub подтверждается (через комментарий Джо Гатта)
Единственный способ сделать это - передать ссылку через мой собственный сервис, который будет использовать заголовок github http referrer, чтобы определить, на какую ветку ссылаются, а затем получить соответствующее изображение из Travis CI.
Я бы предпочел сделать один значок Travis-CI для каждой ветки, чтобы читатель мог выбрать или рассмотреть подходящий README.md
при просмотре README.md
.
Обновление 2016 (3 года спустя): хотя на стороне GitHub ничего не изменилось, fedorqui сообщает об обходном пути, упомянутом в " Get Travis Shield на Github для отражения статуса выбранной ветки " Андри.
Просто отобразите все ветки и соответствующие им значки TravisCI.
Если у вас есть только две или три ветки, этого может быть достаточно.
Ответ 2
Я обошел эту проблему с помощью git pre-commit hook, который переписывает строку Travis в README.md с текущей веткой. Пример использования и код pre-commit (Python) (для заданного вопроса) приведены ниже.
использование
dandye$ git checkout -b feature123 origin/master
Branch feature123 set up to track remote branch master from origin.
Switched to a new branch 'feature123'
dandye$ echo "* Feature123" >> README.md
dandye$ git add README.md
dandye$ git commit -m "Added Feature123"
Starting pre-commit hook...
Replacing:
[][travis]
with:
[][travis]
pre-commit hook complete.
[feature123 54897ee] Added Feature123
1 file changed, 2 insertions(+), 1 deletion(-)
dandye$ cat README.md |grep "Build Status"
[][travis]
dandye$
dandye$ cat .git/hooks/pre-commit
#!/usr/bin/python
"""
Referencing current branch in github readme.md[1]
This pre-commit hook[2] updates the README.md file's
Travis badge with the current branch. Gist at[4].
[1] http://stackoverflow.com/questions/18673694/referencing-current-branch-in-github-readme-md
[2] http://www.git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
[3] https://docs.travis-ci.com/user/status-images/
[4] https://gist.github.com/dandye/dfe0870a6a1151c89ed9
"""
import subprocess
# Hard-Coded for your repo (ToDo: get from remote?)
GITHUB_USER="joegattnet"
REPO="joegattnet_v3"
print "Starting pre-commit hook..."
BRANCH=subprocess.check_output(["git",
"rev-parse",
"--abbrev-ref",
"HEAD"]).strip()
# String with hard-coded values
# See Embedding Status Images[3] for alternate formats (private repos, svg, etc)
# [][travis]
# Output String with Variable substitution
travis="[][travis]\n".format(BRANCH=BRANCH,
GITHUB_USER=GITHUB_USER,
REPO=REPO)
sentinel_str="[![Build Status]"
readmelines=open("README.md").readlines()
with open("README.md", "w") as fh:
for aline in readmelines:
if sentinel_str in aline and travis != aline:
print "Replacing:\n\t{aline}\nwith:\n\t{travis}".format(
aline=aline,
travis=travis)
fh.write(travis)
else:
fh.write(aline)
subprocess.check_output(["git", "add", "README.md" ])
print "pre-commit hook complete."
Ответ 3
Лучшим решением для меня было создать сервер, куда я отправляю запрос с именем пользователя и именем репо и получаю образ SVG со статусом сборки для всех веток.