Referencing current branch in github readme.md

后端 未结 3 2244
攒了一身酷
攒了一身酷 2020-12-12 18:28

In my github repo\'s readme.md file I have a Travis-CI badge. I use the following link:

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


        
3条回答
  •  北荒
    北荒 (楼主)
    2020-12-12 19:18

    I worked around this issue with a git pre-commit hook that re-writes the Travis line in the README.md with the current branch. An example of usage and pre-commit (Python) code (for the question as asked) are below.

    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$ 
    

    Python code for the 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."
    

提交回复
热议问题