Skip to content

Instantly share code, notes, and snippets.

@hfs
Created October 12, 2016 09:53
Show Gist options
  • Save hfs/0ff1cf243b163bd551ec22604ce702a5 to your computer and use it in GitHub Desktop.
Save hfs/0ff1cf243b163bd551ec22604ce702a5 to your computer and use it in GitHub Desktop.

Revisions

  1. hfs created this gist Oct 12, 2016.
    30 changes: 30 additions & 0 deletions git2debchangelog.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    #!/bin/bash
    #
    # Convert git log into changelog in Debian format
    #
    # Tags in format 1.2.3-4 become version entries. Log entries between them
    # become changelog entries. Merge commits are not excluded, so you probably
    # have to clean up the result manually.

    RE_VERSION='^v\?[0-9]\+\([.-][0-9]\+\)*'
    # Assume the name of the current directory is the package name
    PACKAGE=${PWD##*/}

    function logentry() {
    local previous=$1
    local version=$2
    echo "$PACKAGE ($version) unstable; urgency=low"
    echo
    git --no-pager log --format=" * %s" $previous${previous:+..}$version
    echo
    git --no-pager log --format=" -- %an <%ae> %aD" -n 1 $version
    echo
    }

    git tag --sort "-version:refname" | grep "$RE_VERSION" | (
    read version; while read previous; do
    logentry $previous $version
    version="$previous"
    done
    logentry "" $version
    )