Référence à la branche courante de GitHub readme.md

In my github repo's readme.j'ai un badge Travis-CI. J'utilise le lien suivant:

https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=staging

le problème évident est que la succursale est codée en dur. Est-il possible d'utiliser une sorte de variable de sorte que la branche est du déjà vu?

76
demandé sur Joe Gatt 2013-09-07 17:17:51

2 réponses

Pas que je sache.

" GitHub support confirms (through OP Joe Gatt 's comment )

la seule façon de faire cela serait de passer le lien par mon propre service qui utiliserait l'en-tête http referrer de GitHub pour déterminer quelle branche est référencée et puis récupérer l'image appropriée de Travis CI

je préférerais faire un badge Travis-CI par branche, pour que le lecteur choisisse ou considère le approprié en voyant le README.md .


Update 2016 (3 ans plus tard): alors que rien n'a changé du côté de GitHub, fedorqui rapports dans le contournement mentionné dans " Get Travis Shield sur Github pour refléter L'état sélectionné de la branche "par Andrie .

Il suffit d'afficher toutes les branches et leurs badges respectifs TravisCI.

Si vous n'avez que deux ou trois branches, qui pourrait être suffisant.

48
répondu VonC 2017-05-23 12:25:45

j'ai travaillé autour de cette question avec un git pre-commit hook qui réécrit la ligne Travis dans le README.md avec la branche actuelle. Vous trouverez ci-dessous un exemple d'utilisation et de code pre-commit (Python) (pour la question telle que posée).

Utilisation

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$ 

code Python pour le code pre-commit

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] /q/referencing-current-branch-in-github-readme-md-49135/"""
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."
12
répondu Dan Dye 2018-03-30 03:19:22