swh.loader.svn.svn_repo module#
SVN client in charge of iterating over svn logs and yield commit representations including the hash tree/content computations per svn commit.
- swh.loader.svn.svn_repo.ssh_askpass_anonymous()[source]#
Context manager to prevent blocking subversion checkout/export operation due to password prompt triggered by an external definition whose target URL starts with ‘svn+ssh://<user>@’. The requested password is automatically set to ‘anonymous’ in that case.
- class swh.loader.svn.svn_repo.SvnRepo(remote_url: str, origin_url: str | None = None, local_dirname: str | None = None, max_content_length: int = 100000, debug: bool = False, username: str = '', password: str = '')[source]#
Bases:
object
Svn repository representation.
- Parameters:
remote_url – Remove svn repository url
origin_url – Associated origin identifier
local_dirname – Path to write intermediary svn action results
- logs(revision_start: int, revision_end: int) Iterator[Dict] [source]#
Stream svn logs between revision_start and revision_end.
Yields revision information between revision_start and revision_end.
- Parameters:
revision_start – the svn revision starting bound
revision_end – the svn revision ending bound
- Yields:
dictionaries of revision data with the following keys – - rev: revision number - author_date: date of the commit - author_name: name of the author of the commit - message: commit message - has_changes: whether the commit has changes (can be False when loading subprojects) - changed_paths: list of paths changed by the commit
- commit_info(revision: int) Dict | None [source]#
Return commit information.
- Parameters:
revision – svn revision to return commit info
- Returns:
A dictionary filled with commit info, see
swh.loader.svn.svn_repo.logs()
for details about its content.
- remote_access() RemoteAccess [source]#
Simple wrapper around subvertpy.ra.RemoteAccess creation enabling to retry the operation if a network error occurs.
- info(origin_url: str | None = None, peg_revision: int | None = None, revision: int | None = None)[source]#
Simple wrapper around subvertpy.client.Client.info enabling to retry the command if a network error occurs.
- Parameters:
origin_url – If provided, query info about a specific repository, currently set origin URL will be used otherwise
- export(url: str, to: str, rev: int | None = None, peg_rev: int | None = None, recurse: bool = True, ignore_externals: bool = False, overwrite: bool = False, ignore_keywords: bool = False, remove_dest_path: bool = True) int [source]#
Simple wrapper around subvertpy.client.Client.export enabling to retry the command if a network error occurs.
See documentation of svn_client_export5 function from subversion C API to get details about parameters.
- checkout(url: str, path: str, rev: int | None = None, peg_rev: int | None = None, recurse: bool = True, ignore_externals: bool = False, allow_unver_obstructions: bool = False) int [source]#
Simple wrapper around subvertpy.client.Client.checkout enabling to retry the command if a network error occurs.
See documentation of svn_client_checkout3 function from subversion C API to get details about parameters.
- propget(name: str, target: str, peg_rev: int | None, rev: int | None = None, recurse: bool = False) Dict[str, bytes] [source]#
Simple wrapper around subvertpy.client.Client.propget enabling to retry the command if a network error occurs.
See documentation of svn_client_propget5 function from subversion C API to get details about parameters.
- export_temporary(revision: int) Tuple[str, bytes] [source]#
Export the repository to a given revision in a temporary location. This is up to the caller of this function to clean up the temporary location when done (cf. self.clean_fs method)
- Parameters:
revision – Revision to export at
- Returns:
The tuple local_dirname the temporary location root folder, local_url where the repository was exported.
- swh_hash_data_per_revision(start_revision: int, end_revision: int) Iterator[Tuple[int, Dict, Tuple[List[Content], List[SkippedContent], List[Directory]], Directory]] [source]#
Compute swh hash data per each revision between start_revision and end_revision.
- Parameters:
start_revision – starting revision
end_revision – ending revision
- Yields:
Tuple (rev, nextrev, commit, objects_per_path) –
rev: current revision
commit: commit data (author, date, message) for such revision
objects_per_path: Tuple of list of objects between start_revision and end_revision
complete Directory representation
- swh_hash_data_at_revision(revision: int) Tuple[Dict, Directory] [source]#
Compute the information at a given svn revision. This is expected to be used for checks only.
- Yields:
The tuple (commit dictionary, targeted directory object).
- clean_fs(local_dirname: str | None = None) None [source]#
Clean up the local working copy.
- Parameters:
local_dirname – Path to remove recursively if provided. Otherwise, remove the temporary upper root tree used for svn repository loading.
- get_head_revision_at_date(date: datetime) int [source]#
Get HEAD revision number for a given date.
- Parameters:
date – the reference date
- Returns:
the revision number of the HEAD revision at that date
- Raises:
ValueError – first revision date is greater than given date
- swh.loader.svn.svn_repo.get_svn_repo(*args, **kwargs)[source]#
Instantiate an SvnRepo class and trap SubversionException if any raises. In case of connection error to the repository, its read access using anonymous credentials is also attempted.
- Raises:
NotFound – if the repository is not found
SubversionException – if any other kind of subversion problems arise