|
@@ -367,9 +367,13 @@ class Git(FetchMethod):
|
|
|
|
|
|
# If the repo still doesn't exist, fallback to cloning it
|
|
|
if not os.path.exists(ud.clonedir):
|
|
|
- # We do this since git will use a "-l" option automatically for local urls where possible
|
|
|
+ # We do this since git will use a "-l" option automatically for local urls where possible,
|
|
|
+ # but it doesn't work when git/objects is a symlink, only works when it is a directory.
|
|
|
if repourl.startswith("file://"):
|
|
|
- repourl = repourl[7:]
|
|
|
+ repourl_path = repourl[7:]
|
|
|
+ objects = os.path.join(repourl_path, 'objects')
|
|
|
+ if os.path.isdir(objects) and not os.path.islink(objects):
|
|
|
+ repourl = repourl_path
|
|
|
clone_cmd = "LANG=C %s clone --bare --mirror %s %s --progress" % (ud.basecmd, shlex.quote(repourl), ud.clonedir)
|
|
|
if ud.proto.lower() != 'file':
|
|
|
bb.fetch2.check_network_access(d, clone_cmd, ud.url)
|