Add git changelog method.

Change-Id: I71d99f00b2154bf151a1521016118ba6bd088f79
This commit is contained in:
Monty Taylor
2012-02-07 10:02:45 -08:00
parent a9e1072973
commit 508d090e46
3 changed files with 50 additions and 11 deletions

View File

@@ -36,10 +36,13 @@ def parse_mailmap(mailmap='.mailmap'):
return mapping
def str_dict_replace(s, mapping):
for s1, s2 in mapping.iteritems():
s = s.replace(s1, s2)
return s
def canonicalize_emails(changelog, mapping):
""" Takes in a string and an email alias mapping and replaces all
instances of the aliases in the string with their real email
"""
for alias, email in mapping.iteritems():
changelog = changelog.replace(alias, email)
return changelog
# Get requirements from the first file that exists
@@ -112,3 +115,13 @@ version_info = {
'revno': %s
}
""" % (branch_nick, revid, revno))
def write_git_changelog():
""" Write a changelog based on the git changelog """
if os.path.isdir('.git'):
git_log_cmd = 'git log --stat'
changelog = _run_shell_command(git_log_cmd)
mailmap = parse_mailmap()
with open("ChangeLog", "w") as changelog_file:
changelog_file.write(canonicalize_emails(changelog, mailmap))

33
tests/unit/test_setup.py Normal file
View File

@@ -0,0 +1,33 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2011 OpenStack LLC.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import unittest
import mock
from openstack.common import exception
from openstack.common import utils
from openstack.common import setup
class UtilsTest(unittest.TestCase):
def test_str_dict_replace(self):
string = 'Johnnie T. Hozer'
mapping = {'T.': 'The'}
self.assertEqual('Johnnie The Hozer',
setup.canonicalize_emails(string, mapping))

View File

@@ -23,7 +23,6 @@ import mock
from openstack.common import exception
from openstack.common import utils
from openstack.common import setup
class UtilsTest(unittest.TestCase):
@@ -108,12 +107,6 @@ class UtilsTest(unittest.TestCase):
self.assertEqual(skynet_self_aware_time,
utils.parse_isotime(skynet_self_aware_time_str))
def test_str_dict_replace(self):
string = 'Johnnie T. Hozer'
mapping = {'T.': 'The'}
self.assertEqual('Johnnie The Hozer',
setup.str_dict_replace(string, mapping))
def test_utcnow(self):
utils.set_time_override(mock.sentinel.utcnow)
self.assertEqual(utils.utcnow(), mock.sentinel.utcnow)