From 70b66766d81f7ada38364c8cd0603617f1f040ba Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Thu, 1 Dec 2016 10:11:27 -0500 Subject: [PATCH] add dulwich for reno Reno currently uses shell commands to access git history. Newer versions of git change the output of git log in a way that eliminates information reno needs to track file renames. Dulwich is a python library for accessing git repo information. We plan to rewrite the scanner in reno using dulwich to avoid issues with porcelain changes in the git command line in the future. We also reviewd gitpython, which uses the git CLI and is likely to have the same issue, and pygit2, which uses libgit2 and is harder to pip install. Dulwich has C extensions, but can be installed via pip without external libraries from system packages. Dulwich is released under the Apache 2.0 and GPLv2 licenses. We will use the Apache license. Dulwich supports Python 2.7 and 3.5. Dulwich appears relatively actively maintained, with updates from just under 2 weeks ago in the git repository (https://github.com/jelmer/dulwich) and a release in October of this year. Dulwich will not be part of the runtime dependencies of OpenStack services, since it should only be used within reno. I believe that means if we need to pin it, we can, but for now the global-requirements.txt update does not include an upper bound. Change-Id: Ib79d6ee6cc38752b3692ebcadbcbc34c9cae35a6 Related-Bug: #1633168 Signed-off-by: Doug Hellmann --- global-requirements.txt | 1 + upper-constraints.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/global-requirements.txt b/global-requirements.txt index bd6619d5ee..553feca050 100644 --- a/global-requirements.txt +++ b/global-requirements.txt @@ -39,6 +39,7 @@ dnspython>=1.14.0;python_version=='2.7' # http://www.dnspython.org/LICENSE dnspython3>=1.12.0,!=1.13.0,!=1.14.0;python_version>='3.0' # http://www.dnspython.org/LICENSE dogpile.cache>=0.6.2 # BSD dogtag-pki>=10.3.5.1 # LGPLv3+ +dulwich>=0.15.0 # Apache-2.0 elasticsearch>=2.0.0,<=3.0.0 # Apache-2.0 enum34;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD # NOTE: New versions of eventlet should not be accepted lightly diff --git a/upper-constraints.txt b/upper-constraints.txt index 9f3d8ec694..b3186c3a93 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -119,6 +119,7 @@ docker-py===1.7.2 docutils===0.12 dogpile.cache===0.6.2 dogtag-pki===10.3.5.1 +dulwich===0.15.0 elasticsearch===2.4.0 enum34===1.1.6 eventlet===0.19.0