wake-up-neo.com

Referenzieren des aktuellen Zweigs in github readme.md

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?

79
Joe Gatt

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.

51
VonC

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).

Verwendungszweck

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:
    [![Build Status](https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=master)][travis]

with:
    [![Build Status](https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=feature123)][travis]

pre-commit hook complete.
[feature123 54897ee] Added Feature123
 1 file changed, 2 insertions(+), 1 deletion(-)
dandye$ cat README.md |grep "Build Status"
[![Build Status](https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=feature123)][travis]
dandye$ 

Python-Code für den Pre-Commit-Code

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)

#  [![Build Status](https://travis-ci.org/
#  joegattnet/joegattnet_v3.png?
#  branch=staging)][travis]

# Output String with Variable substitution
travis="[![Build Status](https://travis-ci.org/" \
       "{GITHUB_USER}/{REPO}.png?" \
       "branch={BRANCH})][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."
13
Dan Dye

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.

0
Alin Enachescu