Github में वर्तमान शाखा को संदर्भित करना readme.md


91

मेरे github रेपो की readme.mdफ़ाइल में मेरे पास ट्रैविस-सीआई बैज है। मैं निम्नलिखित लिंक का उपयोग करता हूं:

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

स्पष्ट समस्या यह है कि शाखा हार्डकोड है। क्या किसी प्रकार के चर का उपयोग करना संभव है ताकि शाखा को वर्तमान में देखा जा सके?



रिपॉजिटरी पार्ट को भी एक वेरिएबल बनाना संभव होना चाहिए, ताकि फोर्क्ड रिपॉजिटरी उन मूल रिपॉजिटरी की स्थिति को गलत तरीके से रिपोर्ट न करें, जिनसे वे कांटेक्ट किए गए हैं।
ईओजीएनएम

जवाबों:


54

मेरी जानकारी में नहीं।
GitHub समर्थन पुष्टि करता है ( ओपी जो गट की टिप्पणी के माध्यम से )

ऐसा करने का एकमात्र तरीका मेरी स्वयं की सेवा के माध्यम से लिंक को पास करना होगा, जो यह निर्धारित करने के लिए कि किस शाखा को संदर्भित किया जा रहा है और फिर ट्रैविस सीआई से उपयुक्त छवि प्राप्त करने के लिए जीआईटीबी के http रेफ़र हेडर का उपयोग किया जाएगा।

मैं प्रति शाखा एक ट्रैविस-सीआई बैज बनाऊंगा, जिसे देखने के लिए पाठक उचित या चुनेगा README.md


अपडेट २०१६ (३ साल बाद): जबकि एंड्री द्वारा " गेट ट्रैविस शील्ड ऑन गिथब टू रिफ्लेक्ट ब्रांच स्टेटस " को दर्शाने के लिए किए गए वर्कअराउंड में गिटहब की ओर से कुछ भी नहीं बदला है ।
बस सभी शाखाओं और उनके संबंधित ट्रैविसी बैज को प्रदर्शित करें।

यदि आपके पास केवल दो या तीन शाखाएँ हैं, तो यह पर्याप्त हो सकता है।


1
धन्यवाद, VonC। मैंने github समर्थन से संपर्क किया, जैसा कि आपने सुझाव दिया था और यहां उनका उत्तर दिया गया है:
जो गट सेप

1
उन्होंने पुष्टि की कि यह नहीं किया जा सकता है। उन्होंने कहा कि ऐसा करने का एकमात्र तरीका मेरी स्वयं की सेवा के माध्यम से लिंक को पारित करना होगा जो गिथब के http रेफरेडर हेडर का उपयोग करके यह निर्धारित करेगा कि किस शाखा को संदर्भित किया जा रहा है और फिर ट्रैविस सीआई से उपयुक्त छवि प्राप्त करें ...
जो गट

4
मैंने बस अपनी स्वयं की सेवा के माध्यम से लिंक को पारित करने की कोशिश की, लेकिन दुर्भाग्य से HTTP_REFERERजब GADHUB पर README से छवि लोड हुई तो मुझे नहीं मिला । :-(
0xced

3
वैसे, मुझे लगता है कि SSL Proxied Assets की वजह से इसे हासिल करना अब असंभव है ।
0xced

2
@fedorqui जहां तक ​​मुझे पता है, यह उपलब्ध नहीं है।
VonC

15

मैंने इस मुद्दे पर एक पूर्व-पूर्व हुक के साथ काम किया है जो वर्तमान शाखा के साथ README.md में ट्रैविस लाइन को फिर से लिखता है। उपयोग और पूर्व-प्रतिबद्ध (पायथन) कोड (पूछे गए प्रश्न के लिए) का एक उदाहरण नीचे दिया गया है।

प्रयोग

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$ 

प्री-कमिट कोड के लिए पायथन कोड

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

रेपो और जीथब उपयोगकर्ता प्राप्त करना मुश्किल और कुछ हद तक नाजुक है क्योंकि रिपॉजिटरी कहां से आता है इसकी कोई गारंटी नहीं है। यदि आप नाजुकता के साथ जीने के लिए तैयार हैं तो आप REPOurl=subprocess.check_output(['git','config','--local', 'remote.origin.url']).decode()
रेपो-

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
यह अच्छा है, मैंने इस बारे में सोचा था लेकिन काश मेरे पास एक जादू का चर हो सकता है जो कि गिथब में वर्तमान शाखा को संदर्भित करता है ताकि मेरा प्रतिबद्ध इतिहास प्रदूषित न हो।
एंडी

0

मेरे लिए सबसे अच्छा समाधान एक सर्वर बनाना था जहां मैं उपयोगकर्ता नाम और रेपो के नाम के साथ एक क्वेरी भेजता हूं और सभी शाखाओं के लिए बिल्ड स्थिति के साथ एक svg छवि प्राप्त करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.