libvcs.cmd.svn
#
For subversion, aka svn(1)
Run svn (subversion) commands directly against SVN working copy.
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.
- exception libvcs.cmd.svn.SvnPropsetValueOrValuePathRequired(*args)[source]#
Bases:
LibVCSException
,TypeError
Raised when required parameters are not passed.
- Parameters:
args (object) –
- class libvcs.cmd.svn.Svn(*, dir, progress_callback=None)[source]#
Bases:
object
Run commands directly against SVN working copy.
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]#
Run a command for this SVN working copy.
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]#
Stage an unversioned file to be pushed to repository next commit.
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
- 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]#
Manage stored authentication credentials.
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]#
Show authorship for file line-by-line.
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'
- cat(*args, **kwargs)[source]#
Output contents of files from working copy or repository URLs.
Wraps svn cat.
- changelist(*args, **kwargs)[source]#
Connect or disconnect files with a changelist.
Wraps svn changelist (cl).
- cleanup(*args, **kwargs)[source]#
Recursively clean up working copy of locks. Unblocks operations.
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]#
Push changes from working copy to SVN repo.
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 pathsmessage (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.'
- copy(*args, **kwargs)[source]#
Copy file or dir in this SVN working copy or repo.
Wraps svn copy (cp).
- delete(*args, **kwargs)[source]#
Remove file from this SVN working copy or repo.
Wraps svn delete (del, remove, rm).
- export(*args, **kwargs)[source]#
Export clean directory tree of working directory.
Wraps svn export.
- import_(*args, **kwargs)[source]#
Import local directory into repository.
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]#
Return info about this SVN repository.
Wraps svn info.
- Return type:
- Parameters:
- targetspathlib.Path
–targets ARG: contents of file ARG as additional args
- xmlbool
–xml, xml output
- revisionUnion[RevisionLiteral, str]
Number, ‘{ DATE }’, ‘HEAD’, ‘BASE’, ‘COMMITTED’, ‘PREV’
- depth :
–depth ARG, Sparse checkout support, Optional
- incrementalbool
–incremental, give output suitable for concatenation
- _list(*args, **kwargs)[source]#
List files in SVN repository (without downloading them).
Wraps svn list (ls).
- lock(targets=None, force=None, **kwargs)[source]#
Lock path or URLs for working copy or repository.
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 '...'."
- merge(*args, **kwargs)[source]#
Apply diffs between two places to SVN working copy.
Wraps svn merge.
- propdel(*args, **kwargs)[source]#
Remove a property for this SVN working copy.
Wraps svn propdel (pdel, pd).
- propedit(*args, **kwargs)[source]#
Change a property for this SVN working copy.
Wraps svn propedit (pedit, pe).
- propget(*args, **kwargs)[source]#
Return a property for this SVN working copy.
Wraps svn propget (pget, pg).
- proplist(*args, **kwargs)[source]#
Return list of properties for this SVN working copy.
Wraps svn proplist (plist, pl).
- propset(name, path=None, value=None, value_path=None, target=None, *args, **kwargs)[source]#
Set property for this SVN working copy or a remote revision.
Note: Setting remote properties via –revprop does not work yet.
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]#
Set the SVN repository URL for this working copy.
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]#
Resolve conflicts with this SVN working copy.
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]#
Resolve this working copy’s conflicted state.
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]#
Revert any changes to this SVN working copy.
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]#
Return status of this SVN working copy.
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]#
Switch working copy to a different SVN repo URL.
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]#
Unlock path or URL reserved by another user.
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]#
Fetch latest changes to working copy.
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 ..."