code: def generate_changelog(context):
      
  
      changelog_content = [
          '\n## [%s](%s/compare/%s...%s)\n\n'
          % (
              context.new_version,
              context.repo_url,
              context.current_version,
              context.new_version,
          )
      ]
  
      git_log_content = None
      git_log = 'log --oneline --no-merges --no-color'.split(' ')
      try:
          git_log_tag = git_log + ['%s..master' % context.current_version]
          git_log_content = git(git_log_tag)
          log.debug('content: %s' % git_log_content)
      except Exception:
          log.warn('Error diffing previous version, initial release')
          git_log_content = git(git_log)
  
      git_log_content = replace_sha_with_commit_link(context.repo_url, git_log_content)
      # turn change log entries into markdown bullet points
      if git_log_content:
          [
              changelog_content.append('* %s\n' % line) if line else line
              for line in git_log_content[:-1]
          ]
  
      write_new_changelog(
          context.repo_url, 'CHANGELOG.md', changelog_content, dry_run=context.dry_run
      )
      log.info('Added content to CHANGELOG.md')
      context.changelog_content = changelog_content
docs: Generates an automatic changelog from your commit messages.