Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/svn/svn.py
Show All 36 Lines | |||||
from .utils import is_recursive_external, parse_external_definition | from .utils import is_recursive_external, parse_external_definition | ||||
# When log message contains empty data | # When log message contains empty data | ||||
DEFAULT_AUTHOR_MESSAGE = "" | DEFAULT_AUTHOR_MESSAGE = "" | ||||
logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||
def quote_svn_url(url: str) -> str: | |||||
return url.replace(" ", "%20") | |||||
class SvnRepo: | class SvnRepo: | ||||
"""Svn repository representation. | """Svn repository representation. | ||||
Args: | Args: | ||||
remote_url: Remove svn repository url | remote_url: Remove svn repository url | ||||
origin_url: Associated origin identifier | origin_url: Associated origin identifier | ||||
local_dirname: Path to write intermediary svn action results | local_dirname: Path to write intermediary svn action results | ||||
▲ Show 20 Lines • Show All 214 Lines • ▼ Show 20 Lines | def remote_access(self, auth: Auth) -> RemoteAccess: | ||||
"""Simple wrapper around subvertpy.ra.RemoteAccess creation | """Simple wrapper around subvertpy.ra.RemoteAccess creation | ||||
enabling to retry the operation if a network error occurs.""" | enabling to retry the operation if a network error occurs.""" | ||||
return RemoteAccess(self.remote_url, auth=auth) | return RemoteAccess(self.remote_url, auth=auth) | ||||
@svn_retry() | @svn_retry() | ||||
def info(self, origin_url: str): | def info(self, origin_url: str): | ||||
"""Simple wrapper around subvertpy.client.Client.info enabling to retry | """Simple wrapper around subvertpy.client.Client.info enabling to retry | ||||
the command if a network error occurs.""" | the command if a network error occurs.""" | ||||
info = self.client.info(origin_url.rstrip("/")) | info = self.client.info(quote_svn_url(origin_url).rstrip("/")) | ||||
return next(iter(info.values())) | return next(iter(info.values())) | ||||
@svn_retry() | @svn_retry() | ||||
def export( | def export( | ||||
self, | self, | ||||
url: str, | url: str, | ||||
to: str, | to: str, | ||||
rev: Optional[int] = None, | rev: Optional[int] = None, | ||||
Show All 23 Lines | ) -> int: | ||||
options.append("--ignore-externals") | options.append("--ignore-externals") | ||||
if overwrite: | if overwrite: | ||||
options.append("--force") | options.append("--force") | ||||
if ignore_keywords: | if ignore_keywords: | ||||
options.append("--ignore-keywords") | options.append("--ignore-keywords") | ||||
logger.debug( | logger.debug( | ||||
"svn export %s %s%s %s", | "svn export %s %s%s %s", | ||||
" ".join(options), | " ".join(options), | ||||
url, | quote_svn_url(url), | ||||
f"@{peg_rev}" if peg_rev else "", | f"@{peg_rev}" if peg_rev else "", | ||||
to, | to, | ||||
) | ) | ||||
return self.client.export( | return self.client.export( | ||||
url, | quote_svn_url(url), | ||||
to=to, | to=to, | ||||
rev=rev, | rev=rev, | ||||
peg_rev=peg_rev, | peg_rev=peg_rev, | ||||
recurse=recurse, | recurse=recurse, | ||||
ignore_externals=ignore_externals, | ignore_externals=ignore_externals, | ||||
overwrite=overwrite, | overwrite=overwrite, | ||||
ignore_keywords=ignore_keywords, | ignore_keywords=ignore_keywords, | ||||
) | ) | ||||
Show All 27 Lines | ) -> int: | ||||
options.append(f"-r {rev}") | options.append(f"-r {rev}") | ||||
if recurse: | if recurse: | ||||
options.append("--depth infinity") | options.append("--depth infinity") | ||||
if ignore_externals: | if ignore_externals: | ||||
options.append("--ignore-externals") | options.append("--ignore-externals") | ||||
logger.debug( | logger.debug( | ||||
"svn checkout %s %s%s %s", | "svn checkout %s %s%s %s", | ||||
" ".join(options), | " ".join(options), | ||||
self.remote_url, | quote_svn_url(url), | ||||
f"@{peg_rev}" if peg_rev else "", | f"@{peg_rev}" if peg_rev else "", | ||||
path, | path, | ||||
) | ) | ||||
return self.client.checkout( | return self.client.checkout( | ||||
url, | quote_svn_url(url), | ||||
path=path, | path=path, | ||||
rev=rev, | rev=rev, | ||||
peg_rev=peg_rev, | peg_rev=peg_rev, | ||||
recurse=recurse, | recurse=recurse, | ||||
ignore_externals=ignore_externals, | ignore_externals=ignore_externals, | ||||
allow_unver_obstructions=allow_unver_obstructions, | allow_unver_obstructions=allow_unver_obstructions, | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 213 Lines • Show Last 20 Lines |