libvcs.cmd.svn
#
For subversion, aka svn(1)
Busman’s holiday?
We need to fill these SVN commands and their tests to exquisite perfection, like the artisans in those Michelin-star videos on YouTube. We welcome your contributions, providing you “color between the lines” and stick to the interface. Get in, ‘APIs unstable until we fit the spec.
- class libvcs.cmd.svn.Svn(*, dir, progress_callback=None)[source]#
Bases:
object
Lite, typed, pythonic wrapper for svn(1).
- Parameters:
dir (
Union
[str
,PathLike
[str
]]) – Operates as PATH in the corresponding svn subcommand.progress_callback (ProgressCallbackProtocol | None) –
Examples
>>> Svn(dir=tmp_path) <Svn dir=...>
- __init__(*, dir, progress_callback=None)[source]#
Lite, typed, pythonic wrapper for svn(1).
- Parameters:
dir (
Union
[str
,PathLike
[str
]]) – Operates as PATH in the corresponding svn subcommand.progress_callback (ProgressCallbackProtocol | None) –
- Return type:
None
Examples
>>> Svn(dir=tmp_path) <Svn dir=...>
-
progress_callback:
Optional
[ProgressCallbackProtocol
] = None#
- run(args, *, quiet=None, username=None, password=None, no_auth_cache=None, non_interactive=True, trust_server_cert=None, config_dir=None, config_option=None, make_parents=True, check_returncode=None, **kwargs)[source]#
Passing None to a subcommand option, the flag won’t be passed unless otherwise stated.
svn help and svn help [cmd]
Wraps svn’s Options.
- Parameters:
non_interactive (
Optional
[bool
]) – –non-interactive, defaults to Trueconfig_option (
Optional
[Path
]) – –config-option,FILE:SECTION:OPTION=[VALUE]
cwd (
libvcs._internal.types.StrOrBytesPath
, optional) – Defaults tocwd
make_parents (bool, default:
True
) – Creates checkout directory (:attr:`self.dir) if it doesn’t already exist.check_returncode (bool, default:
None
) – Passthrough toSvn.run()
args (str | bytes | PathLike[str] | PathLike[bytes] | Sequence[str | bytes | PathLike[str] | PathLike[bytes]]) –
kwargs (Any) –
- Return type:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.run(['help']) "usage: svn <subcommand> [options] [args]..."
- checkout(*, url, revision=None, force=None, ignore_externals=None, depth=None, quiet=None, username=None, password=None, no_auth_cache=None, non_interactive=True, trust_server_cert=None, make_parents=True, check_returncode=False)[source]#
Check out a working copy from an SVN repo.
Wraps svn checkout (co).
- Parameters:
url (str) –
revision (Union[RevisionLiteral, str]) – Number, ‘{ DATE }’, ‘HEAD’, ‘BASE’, ‘COMMITTED’, ‘PREV’
force (bool, optional) – force operation to run
ignore_externals (bool, optional) – ignore externals definitions
depth (
Optional
[Literal
['infinity'
,'empty'
,'files'
,'immediates'
]]) – Sparse checkout support, Optionalmake_parents (bool, default:
True
) – Creates checkout directory (:attr:`self.dir) if it doesn’t already exist.check_returncode (bool, default: True) – Passthrough to
Svn.run()
quiet (bool | None) –
username (str | None) –
password (str | None) –
no_auth_cache (bool | None) –
non_interactive (bool | None) –
trust_server_cert (bool | None) –
- Return type:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn_remote_repo = create_svn_remote_repo() >>> svn.checkout(url=f'file://{svn_remote_repo}') '...Checked out revision ...' >>> svn.checkout(url=f'file://{svn_remote_repo}', revision=10) 'svn: E160006: No such revision 10...'
- add(*, path, targets=None, depth=None, force=None, auto_props=None, no_auto_props=None, parents=None)[source]#
Passing None means the flag won’t be passed unless otherwise stated.
Wraps svn add.
- Parameters:
targets (pathlib.Path) – –targets ARG: contents of file ARG as additional args
depth (
Optional
[Literal
['infinity'
,'empty'
,'files'
,'immediates'
]]) – –depth ARG, Sparse checkout support, Optionalforce (
Optional
[bool
]) – –force, Ignore already versioned pathsno_ignore – –no-ignore
path (list[pathlib.Path] | Path) –
- Return type:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...' >>> new_file = tmp_path / 'new.txt' >>> new_file.write_text('example text', encoding="utf-8") 12 >>> svn.add(path=new_file) 'A new.txt'
- auth(remove=None, show_passwords=None, **kwargs)[source]#
Wraps svn auth.
- Parameters:
- Return type:
Examples
>>> Svn(dir=tmp_path).auth() "Credentials cache in '...' is empty"
- blame(target, *, revision=None, verbose=None, force=None, use_merge_history=None, incremental=None, xml=None, extensions=None, **kwargs)[source]#
Wraps svn blame.
- Parameters:
target (pathlib.Path) – path of file
revision (Union[RevisionLiteral, str]) – Number, ‘{ DATE }’, ‘HEAD’, ‘BASE’, ‘COMMITTED’, ‘PREV’
verbose (bool) – -v, –verbose, output extra info
use_merge_history (bool) – -g, –use-merge-history, show extra mergeg info
incremental (bool) – –incremental, give output suitable for concatenation
xml (bool) – –xml, xml output
extensions (str, optional) – Diff or blame tool (pass raw args).
force (bool, optional) – force operation to run
kwargs (Any) –
- Return type:
Examples
>>> svn = Svn(dir=tmp_path) >>> repo = create_svn_remote_repo() >>> svn.checkout(url=f'file://{repo}') '...Checked out revision ...' >>> new_file = tmp_path / 'new.txt' >>> new_file.write_text('example text', encoding="utf-8") 12 >>> svn.add(path=new_file) 'A new.txt' >>> svn.commit(path=new_file, message='My new commit') '...' >>> svn.blame('new.txt') '4 ... example text'
- changelist(*args, **kwargs)[source]#
Wraps svn changelist (cl).
- cleanup(*args, **kwargs)[source]#
Wraps svn cleanup.
- commit(*, path, targets=None, message=None, no_unlock=None, file=None, depth=None, encoding=None, force_log=None, keep_changelists=None, include_externals=None, **kwargs)[source]#
Wraps svn commit (ci).
- Parameters:
targets (pathlib.Path) – –targets ARG: contents of file ARG as additional args
depth (
Optional
[Literal
['infinity'
,'empty'
,'files'
,'immediates'
]]) – –depth ARG, Sparse checkout support, Optionalencoding (
Optional
[str
]) – –encoding, treat value as charset encoding passedkeep_changelists (
Optional
[bool
]) – –keep_changelists, don’t delete changelists after commitforce_log (
Optional
[bool
]) – –force-log, Ignore already versioned pathspath (list[pathlib.Path] | Path) –
message (str | None) –
no_unlock (bool | None) –
file (Path | None) –
include_externals (bool | None) –
kwargs (Any) –
- Return type:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...' >>> new_file = tmp_path / 'new.txt' >>> new_file.write_text('example text', encoding="utf-8") 12 >>> svn.add(path=new_file) 'A new.txt' >>> svn.commit(path=new_file, message='My new commit') 'Adding new.txt...Transmitting file data...Committed revision 4.'
- delete(*args, **kwargs)[source]#
Wraps svn delete (del, remove, rm).
- export(*args, **kwargs)[source]#
Wraps svn export.
- import_(*args, **kwargs)[source]#
Wraps svn import.
Due to python limitation, .import isn’t possible.
- info(target=None, targets=None, changelist=None, revision=None, depth=None, incremental=None, recursive=None, xml=None, *args, **kwargs)[source]#
Wraps svn info.
- Parameters:
targets (pathlib.Path) – –targets ARG: contents of file ARG as additional args
xml (bool) – –xml, xml output
revision (Union[RevisionLiteral, str]) – Number, ‘{ DATE }’, ‘HEAD’, ‘BASE’, ‘COMMITTED’, ‘PREV’
depth (
Optional
[Literal
['infinity'
,'empty'
,'files'
,'immediates'
]]) – –depth ARG, Sparse checkout support, Optionalincremental (bool) – –incremental, give output suitable for concatenation
recursive (bool | None) –
args (Any) –
kwargs (Any) –
- Return type:
- lock(targets=None, force=None, **kwargs)[source]#
Wraps svn lock.
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.lock(targets='samplepickle') "'samplepickle' locked by user '...'."
- mergelist(*args, **kwargs)[source]#
Wraps svn mergelist.
- propdel(*args, **kwargs)[source]#
Wraps svn propdel (pdel, pd).
- propedit(*args, **kwargs)[source]#
Wraps svn propedit (pedit, pe).
- propget(*args, **kwargs)[source]#
Wraps svn propget (pget, pg).
- proplist(*args, **kwargs)[source]#
Wraps svn proplist (plist, pl).
- propset(name, path=None, value=None, value_path=None, target=None, *args, **kwargs)[source]#
Wraps svn propset (pset, ps).
- Parameters:
- Return type:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.propset(name="my_prop", value="value", path=".") "property 'my_prop' set on '.'"
- relocate(*, to_path, **kwargs)[source]#
Wraps svn relocate.
Examples
>>> svn = Svn(dir=tmp_path / 'initial_place') >>> repo_path = create_svn_remote_repo() >>> svn.checkout(url=repo_path.as_uri()) '...Checked out revision ...' >>> new_place = repo_path.rename(tmp_path / 'new_place') >>> svn.relocate(to_path=new_place.absolute().as_uri()) ''
- resolve(path, targets=None, depth=None, force=None, *args, **kwargs)[source]#
Wraps svn resolve.
- Return type:
- Parameters:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.resolve(path='.') ''
- resolved(*, path, targets=None, depth=None, force=None, **kwargs)[source]#
Wraps svn resolved.
- Return type:
- Parameters:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.resolved(path='.') ''
- revert(*, path, targets=None, depth=None, force=None, **kwargs)[source]#
Wraps svn revert.
- Return type:
- Parameters:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> new_file = tmp_path / 'new.txt' >>> new_file.write_text('example text', encoding="utf-8") 12 >>> svn.add(path=new_file) 'A new.txt' >>> svn.commit(path=new_file, message='My new commit') '...' >>> svn.revert(path=new_file) ''
- status(*args, **kwargs)[source]#
Wraps svn status (stat, st).
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.status() ''
- switch(*, to_path, path, ignore_ancestry=None, **kwargs)[source]#
Wraps svn switch (sw).
- Return type:
- Parameters:
Examples
>>> svn = Svn(dir=tmp_path / 'initial_place') >>> repo_path = create_svn_remote_repo() >>> svn.checkout(url=(repo_path / 'sampledir').as_uri()) '...Checked out revision ...' >>> other_dir = repo_path / 'otherdir' >>> svn.switch(to_path=other_dir.as_uri(), path='.', ignore_ancestry=True) 'D...Updated to revision...'
- unlock(targets=None, force=None, **kwargs)[source]#
Wraps svn unlock.
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.lock(targets='samplepickle') "'samplepickle' locked by user '...'." >>> svn.unlock(targets='samplepickle') "'samplepickle' unlocked."
- update(accept=None, changelist=None, diff3_cmd=None, editor_cmd=None, force=None, ignore_externals=None, parents=None, quiet=None, revision=None, set_depth=None, *args, **kwargs)[source]#
Wraps svn update (up).
- Return type:
- Parameters:
Examples
>>> svn = Svn(dir=tmp_path) >>> svn.checkout(url=f'file://{create_svn_remote_repo()}') '...Checked out revision ...' >>> svn.update() "Updating ..."