web-dev-qa-db-fra.com

Référencement de la branche actuelle dans github readme.md

Dans le fichier readme.md de mon dépôt github, 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 branche est codée en dur. Est-il possible d'utiliser une sorte de variable pour que la branche soit celle qui est actuellement visualisée?

79
Joe Gatt

Pas que je sache de.
GitHub support confirme (via OP Joe Gatt 's comment )

La seule façon de faire cela serait de passer le lien via mon propre service, qui utiliserait l'en-tête de référent http du github pour déterminer quelle branche est référencée, puis pour extraire l'image appropriée de Travis CI.

Je préférerais créer un badge Travis-CI par branche, que le lecteur puisse choisir ou considérer comme approprié lorsqu'il verra le README.md.


Mise à jour 2016 (3 ans plus tard): alors que rien n’a changé du côté de GitHub, fedorqui indique la solution de contournement mentionnée dans " Faites en sorte que Travis Shield sur Github reflète le statut de branche sélectionné " par Andrie .
Affichez simplement toutes les branches et leurs badges TravisCI respectifs.

Si vous n'avez que deux ou trois branches, cela pourrait suffire.

51
VonC

J'ai corrigé ce problème avec un hook git pre-commit qui réécrit la ligne Travis dans README.md avec la branche actuelle. Un exemple d'utilisation et de code de pré-validation (Python) (pour la question posée) est présenté ci-dessous.

Usage

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 de pré-validation

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

La meilleure solution pour moi était de créer un serveur où j'envoyais une requête avec un nom d'utilisateur et un nom de dépôt et obtenais une image svg avec l'état de construction de toutes les branches.

0
Alin Enachescu