Don't use --branch when cloning if git is older than 1.7.10
This commit is contained in:
parent
ca15782699
commit
e1a80ea3e1
36
hererocks.py
36
hererocks.py
@ -72,7 +72,7 @@ def exec_command(capture, *args):
|
|||||||
if opts.verbose and capture:
|
if opts.verbose and capture:
|
||||||
sys.stdout.write(output)
|
sys.stdout.write(output)
|
||||||
|
|
||||||
return output
|
return capture and output.decode("utf-8")
|
||||||
|
|
||||||
def run_command(*args):
|
def run_command(*args):
|
||||||
exec_command(False, *args)
|
exec_command(False, *args)
|
||||||
@ -117,18 +117,38 @@ clever_http_git_whitelist = [
|
|||||||
"http://bitbucket.com/", "https://bitbucket.com/"
|
"http://bitbucket.com/", "https://bitbucket.com/"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
git_branch_accepts_tags = None
|
||||||
|
git_version_regexp = re.compile("(\d+)\.(\d+)\.?(\d*)")
|
||||||
|
|
||||||
|
def set_git_branch_accepts_tags():
|
||||||
|
global git_branch_accepts_tags
|
||||||
|
|
||||||
|
if git_branch_accepts_tags is None:
|
||||||
|
version_output = exec_command(True, "git --version")
|
||||||
|
match = git_version_regexp.search(version_output)
|
||||||
|
|
||||||
|
if match:
|
||||||
|
major = int(match.group(1))
|
||||||
|
minor = int(match.group(2))
|
||||||
|
tiny = int(match.group(3) or "0")
|
||||||
|
git_branch_accepts_tags = major > 1 or (major == 1 and (minor > 7 or (minor == 7 and tiny >= 10)))
|
||||||
|
|
||||||
def git_clone_command(repo, ref):
|
def git_clone_command(repo, ref):
|
||||||
# Http(s) transport may be dumb and not understand --depth.
|
# Http(s) transport may be dumb and not understand --depth.
|
||||||
if repo.startswith("http://") or repo.startswith("https://"):
|
if repo.startswith("http://") or repo.startswith("https://"):
|
||||||
if not any(map(repo.startswith, clever_http_git_whitelist)):
|
if not any(map(repo.startswith, clever_http_git_whitelist)):
|
||||||
return "git clone"
|
return "git clone", True
|
||||||
|
|
||||||
# Have to clone whole repo to get a specific commit.
|
# Have to clone whole repo to get a specific commit.
|
||||||
if all(c in string.hexdigits for c in ref):
|
if all(c in string.hexdigits for c in ref):
|
||||||
return "git clone"
|
return "git clone", True
|
||||||
|
|
||||||
# --branch works even for tags
|
set_git_branch_accepts_tags()
|
||||||
return "git clone --depth=1 --branch=" + quote(ref)
|
|
||||||
|
if git_branch_accepts_tags:
|
||||||
|
return "git clone --depth=1 --branch=" + quote(ref), False
|
||||||
|
else:
|
||||||
|
return "git clone --depth=1", True
|
||||||
|
|
||||||
def cached_archive_name(name, version):
|
def cached_archive_name(name, version):
|
||||||
return os.path.join(opts.downloads, name + version)
|
return os.path.join(opts.downloads, name + version)
|
||||||
@ -193,14 +213,14 @@ def fetch(versions, version, temp_dir, targz=True):
|
|||||||
|
|
||||||
result_dir = os.path.join(temp_dir, name)
|
result_dir = os.path.join(temp_dir, name)
|
||||||
print("Cloning {} from {} @{}".format(capitalize(name), repo, ref))
|
print("Cloning {} from {} @{}".format(capitalize(name), repo, ref))
|
||||||
clone_command = git_clone_command(repo, ref)
|
clone_command, need_checkout = git_clone_command(repo, ref)
|
||||||
run_command(clone_command, quote(repo), quote(result_dir))
|
run_command(clone_command, quote(repo), quote(result_dir))
|
||||||
os.chdir(result_dir)
|
os.chdir(result_dir)
|
||||||
|
|
||||||
if clone_command == "git clone" and ref != "master":
|
if need_checkout and ref != "master":
|
||||||
run_command("git checkout", quote(ref))
|
run_command("git checkout", quote(ref))
|
||||||
|
|
||||||
commit = exec_command(True, "git rev-parse HEAD").strip().decode("utf-8")
|
commit = exec_command(True, "git rev-parse HEAD").strip()
|
||||||
return result_dir, [name, "git", url_to_name(repo), url_to_name(commit)]
|
return result_dir, [name, "git", url_to_name(repo), url_to_name(commit)]
|
||||||
|
|
||||||
lua_version_regexp = re.compile("^\\s*#define\\s+LUA_VERSION_NUM\\s+50(\d)\\s*$")
|
lua_version_regexp = re.compile("^\\s*#define\\s+LUA_VERSION_NUM\\s+50(\d)\\s*$")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user