Automating version increase of R packages

前端 未结 3 1362
遇见更好的自我
遇见更好的自我 2020-12-13 18:47

Problem

I am developing an R package and I want to increase the version automatically each time I build it. I want that to be able to associate my r

3条回答
  •  执笔经年
    2020-12-13 19:06

    As auto-incrementing version numbering is not going to be built into the devtools package, I figured out a way based on Gabor's answer (the link to igraph in his answer is dead btw).

    When I am about to commit to our repository, I run this bash script to set the date to today and to set the version number based on the latest tag, the .9000 suffix (as suggested here in the book R Packages by Hadley Wickham) and the number of commits within that tag:

    echo "••••••••••••••••••••••••••••••••••••••••••••"
    echo "• Updating package date and version number •"
    echo "••••••••••••••••••••••••••••••••••••••••••••"
    sed -i -- "s/^Date: .*/Date: $(date '+%Y-%m-%d')/" DESCRIPTION
    # get latest tags
    git pull --tags --quiet
    current_tag=`git describe --tags --abbrev=0 | sed 's/v//'`
    current_commit=`git describe --tags | sed 's/.*-\(.*\)-.*/\1/'`
    # combine tag (e.g. 0.1.0) and commit number (like 40) increased by 9000 to indicate beta version
    new_version="$current_tag.$((current_commit + 9000))" # results in 0.1.0.9040
    sed -i -- "s/^Version: .*/Version: ${new_version}/" DESCRIPTION
    echo "First 3 lines of DESCRIPTION:"
    head -3 DESCRIPTION
    echo
    # ... after here more commands like devtools::document() and git commit
    

    To be clear - this script actually makes these changes to the DESCRIPTION file.

    EDIT: support for hundreds - now just increases the commit sequence number by 9000. So commit #120 in tag v0.6.1 leads to 0.6.1.9120.

提交回复
热议问题