mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 18:32:12 +02:00
bitbake: fetch2/git: Restore escape quoting for the git url when used
This fixes a bug where escapes in the url path would not be properly restored for the git commands in the git fetcher. For example, a space which is encoded as '%20' was not properly encoded before the clone command. e.g. SRC_URI="git://git.openembedded.org/bitbake%20example/bitbake;protocol=https" resulted in git clone 'https://git.openembedded.org/bitbake example/bitbake' instead of git clone 'https://git.openembedded.org/bitbake%20example/bitbake' (Bitbake rev: be48024253b93215bb110cd1d05925e789ec9680) Signed-off-by: Patrik Nordvall <patrik.nordvall95@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
85c2eb6d42
commit
8180865c22
@@ -81,6 +81,7 @@ import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import urllib
|
||||
import bb
|
||||
import bb.progress
|
||||
from contextlib import contextmanager
|
||||
@@ -888,7 +889,7 @@ class Git(FetchMethod):
|
||||
username = ud.user + '@'
|
||||
else:
|
||||
username = ""
|
||||
return "%s://%s%s%s" % (ud.proto, username, ud.host, ud.path)
|
||||
return "%s://%s%s%s" % (ud.proto, username, ud.host, urllib.parse.quote(ud.path))
|
||||
|
||||
def _revision_key(self, ud, d, name):
|
||||
"""
|
||||
|
||||
@@ -2508,11 +2508,13 @@ class GitURLWithSpacesTest(FetcherTest):
|
||||
test_git_urls = {
|
||||
"git://tfs-example.org:22/tfs/example%20path/example.git;branch=master" : {
|
||||
'url': 'git://tfs-example.org:22/tfs/example%20path/example.git;branch=master',
|
||||
'repo_url': 'git://tfs-example.org:22/tfs/example%20path/example.git',
|
||||
'gitsrcname': 'tfs-example.org.22.tfs.example_path.example.git',
|
||||
'path': '/tfs/example path/example.git'
|
||||
},
|
||||
"git://tfs-example.org:22/tfs/example%20path/example%20repo.git;branch=master" : {
|
||||
'url': 'git://tfs-example.org:22/tfs/example%20path/example%20repo.git;branch=master',
|
||||
'repo_url': 'git://tfs-example.org:22/tfs/example%20path/example%20repo.git',
|
||||
'gitsrcname': 'tfs-example.org.22.tfs.example_path.example_repo.git',
|
||||
'path': '/tfs/example path/example repo.git'
|
||||
}
|
||||
@@ -2535,6 +2537,7 @@ class GitURLWithSpacesTest(FetcherTest):
|
||||
self.assertEqual(ud.lockfile, os.path.join(self.dldir, "git2", ref['gitsrcname'] + '.lock'))
|
||||
self.assertEqual(ud.clonedir, os.path.join(self.dldir, "git2", ref['gitsrcname']))
|
||||
self.assertEqual(ud.fullmirror, os.path.join(self.dldir, "git2_" + ref['gitsrcname'] + '.tar.gz'))
|
||||
self.assertEqual(ud.method._get_repo_url(ud), ref['repo_url'])
|
||||
|
||||
class CrateTest(FetcherTest):
|
||||
@skipIfNoNetwork()
|
||||
|
||||
Reference in New Issue
Block a user