Enforce minimum git version
Id4528209f1cd500afd06e2e61eb5689022251118 introduced a minimum git version. Abstract our existing check and setup a global with the local git version for tests. Add a minimum version check. Change-Id: I9d1de11269758a453ecc8dde0a4c631d8e762a91
This commit is contained in:
parent
053b629472
commit
a47f5afbfc
@ -44,6 +44,7 @@ USER_CONFIG = os.path.join(CONFIGDIR, "git-review.conf")
|
||||
DEFAULTS = dict(scheme='ssh', hostname=False, port=None, project=False,
|
||||
branch='master', remote="gerrit", rebase="1",
|
||||
track="0", usepushurl="0", notopic=False, branchauthor="name")
|
||||
LOCAL_GIT_VERSION = (0, 0, 0)
|
||||
COPYRIGHT = """\
|
||||
Copyright OpenStack Foundation and OpenDev Contributors
|
||||
|
||||
@ -62,6 +63,10 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
|
||||
# Bump this if a feature of a more recent git is unconditionally
|
||||
# required
|
||||
MINIMUM_GIT_VERSION = (2, 10, 0)
|
||||
|
||||
|
||||
_branch_name = None
|
||||
_has_color = None
|
||||
@ -219,6 +224,23 @@ def get_version():
|
||||
return provider.version
|
||||
|
||||
|
||||
def get_git_version():
|
||||
global LOCAL_GIT_VERSION
|
||||
output = run_command("git version")
|
||||
if "git version" in output:
|
||||
try:
|
||||
v = output.rsplit(None, 1)[1]
|
||||
LOCAL_GIT_VERSION = tuple(map(int, v.split('.')[:3]))
|
||||
except Exception:
|
||||
printwrap("Could not determine git version!")
|
||||
sys.exit(1)
|
||||
if LOCAL_GIT_VERSION < MINIMUM_GIT_VERSION:
|
||||
printwrap("Local git version %s < required git version %s" %
|
||||
'.'.join(map(str, LOCAL_GIT_VERSION)),
|
||||
'.'.join(map(str, MINIMUM_GIT_VERSION)))
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def git_directories():
|
||||
"""Determine (absolute git work directory path, .git subdirectory path)."""
|
||||
cmd = ("git", "rev-parse", "--show-toplevel", "--git-dir")
|
||||
@ -917,20 +939,9 @@ def rebase_changes(branch, remote, interactive=True):
|
||||
"re-run with the '-R' option enabled." % (branch, remote))
|
||||
sys.exit(1)
|
||||
|
||||
# Determine git version to set rebase flags below.
|
||||
output = run_command("git version")
|
||||
rebase_flag = "--rebase-merges"
|
||||
if "git version" in output:
|
||||
try:
|
||||
v = output.rsplit(None, 1)[1]
|
||||
gitv = tuple(map(int, v.split('.')[:3]))
|
||||
if gitv < (2, 18, 0):
|
||||
rebase_flag = "--preserve-merges"
|
||||
except Exception:
|
||||
# We tried to determine the version and failed. Use current git
|
||||
# flag as fallback.
|
||||
warn("Could not determine git version. "
|
||||
"Using modern git rebase flags.")
|
||||
rebase_flag = '--rebase-merges'
|
||||
if LOCAL_GIT_VERSION < (2, 18, 0):
|
||||
rebase_flag = "--preserve-merges"
|
||||
|
||||
interactive_flag = interactive and '-i' or ''
|
||||
|
||||
@ -1677,6 +1688,8 @@ additional information:
|
||||
branch = options.branch
|
||||
options.track = False
|
||||
|
||||
get_git_version()
|
||||
|
||||
global VERBOSE
|
||||
global UPDATE
|
||||
VERBOSE = options.verbose
|
||||
|
Loading…
x
Reference in New Issue
Block a user