old_contents: import os
  import sys
  import traceback
  
  def main(argv):
    # Only check the history if the build is running on a pull request.
    if is_travis_pull_request():
      # This function assumes that HEAD^1 is the base branch and HEAD^2 is the
      # pull request.
      exit_if_pull_request_has_merge_commits()
      print 'Checked pull request history.'
    else:
      print 'Skipped history check.'
  
  def is_travis_pull_request():
    '''Returns true if TRAVIS_PULL_REQUEST is set to indicate a pull request.'''
    return os.environ['TRAVIS_PULL_REQUEST'] != 'false'
  
  def exit_if_pull_request_has_merge_commits():
    '''Exits with an error if any of the commits added by the pull request are
       merge commits.'''
    # Print the parents of each commit added by the pull request.
    git_command = 'git log --format="%P" HEAD^1..HEAD^2'
    for line in os.popen(git_command):
      parents = line.split()
      assert len(parents) >= 1, line
      if len(parents) > 1:
        print 'Pull request contains a merge commit:'
        print_history()
        sys.exit(1)
  
  def print_history():
    os.system('git log HEAD^1 HEAD^2 -30 --graph --oneline --decorate')
  
  def read_process(command):
    '''Runs a command and returns everything printed to stdout.'''
    with os.popen(command, 'r') as fd:
      return fd.read()
  
  if __name__ == '__main__':
    main(sys.argv)
  
new_contents: import os
  import sys
  import traceback
  
  def main(argv):
    # Only check the history if the build is running on a pull request.
    if is_travis_pull_request():
      # This function assumes that HEAD^1 is the base branch and HEAD^2 is the
      # pull request.
      exit_if_pull_request_has_merge_commits()
      print 'Checked pull request history: SUCCEEDED'
    else:
      print 'Skipped history check.'
  
  def is_travis_pull_request():
    '''Returns true if TRAVIS_PULL_REQUEST is set to indicate a pull request.'''
    return os.environ['TRAVIS_PULL_REQUEST'] != 'false'
  
  def exit_if_pull_request_has_merge_commits():
    '''Exits with an error if any of the commits added by the pull request are
       merge commits.'''
    # Print the parents of each commit added by the pull request.
    git_command = 'git log --format="%P" HEAD^1..HEAD^2'
    for line in os.popen(git_command):
      parents = line.split()
      assert len(parents) >= 1, line
      if len(parents) > 1:
        print 'Pull request contains a merge commit:'
        print_history()
        print 'Checked pull request history: FAILED'
        sys.exit(1)
  
  def print_history():
    os.system('git log HEAD^1 HEAD^2 -30 --graph --oneline --decorate')
  
  def read_process(command):
    '''Runs a command and returns everything printed to stdout.'''
    with os.popen(command, 'r') as fd:
      return fd.read()
  
  if __name__ == '__main__':
    main(sys.argv)
  
subject: Improve status message in check-git-history.py.