Github readme.md'deki geçerli şubeye başvurma


91

Github depomun readme.mddosyasında Travis-CI rozetim var. Aşağıdaki bağlantıyı kullanıyorum:

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

Bariz sorun, dalın kodlanmış olmasıdır. Şu anda görüntülenen dalın olması için bir çeşit değişken kullanmak mümkün mü?



Depo bölümünü bir değişken haline getirmek de mümkün olmalıdır, böylece çatallanmış depolar, çatallandıkları orijinal deponun durumunu yanlış bir şekilde raporlamazlar.
EoghanM

Yanıtlar:


54

Bildiğim kadarıyla hayır.
GitHub desteği (aracılığıyla onaylar OP Joe Gatt bireyin comment )

Bunu yapmanın tek yolu, bağlantıyı, hangi dala başvurulduğunu belirlemek için github'ın http yönlendirme başlığını kullanan kendi hizmetim üzerinden geçirmek ve ardından uygun görüntüyü Travis CI'dan almaktır.

Okuyucunun uygun olanı seçmesi veya README.md.


Güncelleme 2016 (3 yıl sonra): hiçbir şey GitHub tarafında değişmiş olmasına karşın, fedorqui çözüm raporlar "sözü Github Travis Shield alın Şube Durum Seçilen yansıtmak için tarafından" ANDRIE .
Tüm şubeleri ve ilgili TravisCI rozetlerini göstermeniz yeterlidir.

Yalnızca iki veya üç şubeniz varsa, bu yeterli olabilir.


1
Teşekkürler VonC. Önerdiğiniz gibi github desteğiyle iletişime geçtim ve yanıtı:
Joe Gatt

1
Bunun yapılamayacağını doğruladılar. Bunu yapmanın tek yolunun, bağlantıyı, hangi dala başvurulduğunu belirlemek için github'ın http yönlendirme başlığını kullanacak ve ardından Travis
CI'den

4
Bağlantıyı kendi hizmetim üzerinden geçirmeyi denedim, ancak ne yazık ki HTTP_REFERERgörüntü GitHub'daki README'den yüklendiğinde alamıyorum . :-(
0x

3
Sanırım artık SSL Proxied Assets sayesinde elde etmek imkansız .
2014

2
@fedorqui Bildiğim kadarıyla mevcut değil.
VonC

15

Bu sorunu, README.md'deki Travis satırını geçerli şubeyle yeniden yazan bir git pre-commit kancasıyla çözdüm. Kullanım ve ön işleme (Python) koduna bir örnek (sorulduğu soru için) aşağıdadır.

Kullanım

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$ 

Ön işleme kodu için Python kodu

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

Deponun nereden geldiğine dair garantili bir bilgi olmadığından, depo ve github kullanıcısını almak zor ve biraz kırılgandır. Kırılganlıkla yaşamaya hazırsanız repo-URL'yi kullanabilirsiniz:REPOurl=subprocess.check_output(['git','config','--local', 'remote.origin.url']).decode()
DrSAR

GITHUB_USER=re.match('.*:([a-zA-Z0-9]*)\/', REPOurl).groups()[0]
DrSAR

REPO=re.match('.*\/([a-zA-Z0-9]*).git', REPOurl).groups()[0]
DrSAR

2
Harika, bunu düşünmüştüm ama keşke github'daki mevcut şubeye atıfta bulunan sihirli bir değişkene sahip olabilsem, böylece taahhüt geçmişim kirlenmesin.
Andy

0

Benim için en iyi çözüm, kullanıcı adı ve repo adıyla bir sorgu gönderdiğim ve tüm şubeler için yapı durumu ile bir svg görüntüsü aldığım bir sunucu oluşturmaktı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.