In der Readme.md-Datei meines Github-Repos befindet sich ein Travis-CI-Badge. Ich verwende den folgenden Link:
https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=staging
Das offensichtliche Problem ist, dass der Zweig hartcodiert ist. Ist es möglich, eine Art Variable zu verwenden, damit der Zweig der gerade betrachtete ist?
Nicht, dass ich davon Wüste.
GitHub-Unterstützung bestätigt (durch OP Joe Gatt 's Kommentar )
Die einzige Möglichkeit, dies zu tun, besteht darin, den Link durch meinen eigenen Dienst zu leiten, wobei der http-Referrer-Header des Github verwendet wird, um zu bestimmen, auf welchen Zweig verwiesen wird, und dann das entsprechende Bild von Travis CI abzurufen
Ich würde lieber ein Travis-CI-Abzeichen pro Zweig anfertigen, damit der Leser das geeignete auswählen oder in Betracht ziehen kann, wenn er den README.md
sieht.
Update 2016 (3 Jahre später): Während sich auf der GitHub-Seite nichts geändert hat, gibt fedorqui die in " Travis Shield auf Github herunterladen, um den Status des ausgewählten Zweigs widerzuspiegeln " erwähnte Problemumgehung aus. von Andrie .
Zeigen Sie einfach alle Filialen und ihre jeweiligen TravisCI-Abzeichen an.
Wenn Sie nur zwei oder drei Zweige haben, könnte das ausreichen.
Ich habe dieses Problem mit einem Git-Pre-Commit-Hook umgangen, der die Travis-Zeile in der README.md mit dem aktuellen Zweig neu schreibt. Nachstehend finden Sie ein Beispiel für den Verwendungs- und Pre-Commit- (Python-) Code (für die gestellte Frage).
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."
Die beste Lösung für mich war, einen Server zu erstellen, an den ich eine Abfrage mit Benutzername und Namen des Repos sende und ein svg-Abbild mit dem Build-Status für alle Zweige bekomme.