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,
|
DEFAULTS = dict(scheme='ssh', hostname=False, port=None, project=False,
|
||||||
branch='master', remote="gerrit", rebase="1",
|
branch='master', remote="gerrit", rebase="1",
|
||||||
track="0", usepushurl="0", notopic=False, branchauthor="name")
|
track="0", usepushurl="0", notopic=False, branchauthor="name")
|
||||||
|
LOCAL_GIT_VERSION = (0, 0, 0)
|
||||||
COPYRIGHT = """\
|
COPYRIGHT = """\
|
||||||
Copyright OpenStack Foundation and OpenDev Contributors
|
Copyright OpenStack Foundation and OpenDev Contributors
|
||||||
|
|
||||||
|
@ -62,6 +63,10 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
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
|
_branch_name = None
|
||||||
_has_color = None
|
_has_color = None
|
||||||
|
@ -219,6 +224,23 @@ def get_version():
|
||||||
return provider.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():
|
def git_directories():
|
||||||
"""Determine (absolute git work directory path, .git subdirectory path)."""
|
"""Determine (absolute git work directory path, .git subdirectory path)."""
|
||||||
cmd = ("git", "rev-parse", "--show-toplevel", "--git-dir")
|
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))
|
"re-run with the '-R' option enabled." % (branch, remote))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Determine git version to set rebase flags below.
|
rebase_flag = '--rebase-merges'
|
||||||
output = run_command("git version")
|
if LOCAL_GIT_VERSION < (2, 18, 0):
|
||||||
rebase_flag = "--rebase-merges"
|
rebase_flag = "--preserve-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.")
|
|
||||||
|
|
||||||
interactive_flag = interactive and '-i' or ''
|
interactive_flag = interactive and '-i' or ''
|
||||||
|
|
||||||
|
@ -1677,6 +1688,8 @@ additional information:
|
||||||
branch = options.branch
|
branch = options.branch
|
||||||
options.track = False
|
options.track = False
|
||||||
|
|
||||||
|
get_git_version()
|
||||||
|
|
||||||
global VERBOSE
|
global VERBOSE
|
||||||
global UPDATE
|
global UPDATE
|
||||||
VERBOSE = options.verbose
|
VERBOSE = options.verbose
|
||||||
|
|
Loading…
Reference in New Issue