remote¶
For git-remote(1).
Overview¶
Manage git remotes using GitRemoteManager (collection-level)
and GitRemoteCmd (per-remote operations).
Examples¶
List remotes — a freshly cloned repository has its origin:
>>> from libvcs.cmd.git import Git
>>> git = Git(path=example_git_repo.path)
>>> git.remotes.ls()
[<GitRemoteCmd path=... remote_name=origin>]
Add a remote:
>>> from libvcs.cmd.git import Git
>>> git = Git(path=example_git_repo.path)
>>> git.remotes.add(name='upstream', url='https://github.com/org/repo.git')
''
Get a specific remote and operate on it through its Cmd object:
>>> from libvcs.cmd.git import Git
>>> git = Git(path=example_git_repo.path)
>>> origin = git.remotes.get(remote_name='origin')
>>> 'origin' in origin.show()
True
>>> origin.prune()
''
>>> origin.set_url(url='https://example.com/new.git')
''
API Reference¶
Wrap some of git-remote(1), git-checkout(1), manager.
Examples
>>> GitRemoteManager(path=tmp_path) <GitRemoteManager path=...>
>>> GitRemoteManager(path=tmp_path).run(check_returncode=False, trim=True) 'fatal: not a git repository (or any of the parent directories): .git'
>>> GitRemoteManager( ... path=example_git_repo.path ... ).run(trim=True) 'origin'
Run a command against a git repository’s remotes.
Wraps git remote.
Examples
>>> GitRemoteManager(path=example_git_repo.path).run(trim=True) 'origin'
Git remote add.
Examples
>>> git_remote_repo = create_git_remote_repo() >>> GitRemoteManager(path=example_git_repo.path).add( ... name='my_remote', ... url=f'file://{git_remote_repo}' ... ) ''
Git remote show.
Examples
>>> GitRemoteManager(path=example_git_repo.path).show(trim=True) 'origin'
For the example below, add a remote: >>> GitRemoteManager(path=example_git_repo.path).add( … name=’my_remote’, url=f’file:///dev/null’ … ) ‘’
Retrieve a list of remote names: >>> GitRemoteManager(path=example_git_repo.path).show().splitlines() [‘my_remote’, ‘origin’]
List remotes (raw output).
Examples
>>> GitRemoteManager(path=example_git_repo.path)._ls(trim=True) 'origin\tfile:///... (fetch)\norigin\tfile:///... (push)'
List remotes.
Examples
>>> GitRemoteManager(path=example_git_repo.path).ls() [<GitRemoteCmd path=... remote_name=origin>]
For the example below, add a remote: >>> GitRemoteManager(path=example_git_repo.path).add( … name=’my_remote’, url=f’file:///dev/null’ … ) ‘’
>>> GitRemoteManager(path=example_git_repo.path).ls() [<GitRemoteCmd path=... remote_name=my_remote>, <GitRemoteCmd path=... remote_name=origin>]
- Return type:
Get remote via filter lookup.
Examples
>>> GitRemoteManager( ... path=example_git_repo.path ... ).get(remote_name='origin') <GitRemoteCmd path=... remote_name=origin>
>>> GitRemoteManager( ... path=example_git_repo.path ... ).get(remote_name='unknown') Traceback (most recent call last): exec(compile(example.source, filename, "single", ... return self.ls().get(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "..._internal/query_list.py", line ..., in get raise ObjectDoesNotExist libvcs._internal.query_list.ObjectDoesNotExist
- Parameters:
- Return type:
Get remotes via filter lookup.
Examples
>>> GitRemoteManager( ... path=example_git_repo.path ... ).filter(remote_name__contains='origin') [<GitRemoteCmd path=... remote_name=origin>]
>>> GitRemoteManager( ... path=example_git_repo.path ... ).filter(remote_name__contains='unknown') []
- Parameters:
- Return type:
Bases:
objectRun git commands targeting a specific remote.
Lite, typed, pythonic wrapper for git-remote(1).
Examples
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ) <GitRemoteCmd path=... remote_name=...>
>>> GitRemoteCmd( ... path=tmp_path, ... remote_name='origin', ... ).run(verbose=True, trim=True) 'fatal: not a git repository (or any of the parent directories): .git'
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ).run(verbose=True) 'origin\tfile:///...'
Run command against a git remote.
Wraps git remote.
Examples
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='master', ... ).run(trim=True) 'origin' >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='master', ... ).run(verbose=True) 'origin\tfile:///...'
Git remote rename.
Examples
>>> git_remote_repo = create_git_remote_repo() >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ).rename(old='origin', new='new_name') '' >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ).run(trim=True) 'new_name'
Git remote remove.
Examples
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ).remove() '' >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ).run() ''
Git remote show.
Examples
>>> print( ... GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin', ... ).show() ... ) * remote origin Fetch URL: ... Push URL: ... HEAD branch: master Remote branch: master tracked...
Git remote prune.
Examples
>>> git_remote_repo = create_git_remote_repo() >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).prune() ''
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).prune(dry_run=True) ''
Git remote get-url.
Examples
>>> git_remote_repo = create_git_remote_repo() >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).get_url() 'file:///...'
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).get_url(push=True) 'file:///...'
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).get_url(_all=True) 'file:///...'
Git remote set-url.
Examples
>>> git_remote_repo = create_git_remote_repo() >>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).set_url( ... url='http://localhost' ... ) ''
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).set_url( ... url='http://localhost', ... push=True ... ) ''
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).set_url( ... url='http://localhost', ... add=True ... ) ''
>>> current_url = GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).get_url() >>> 'fatal' in GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).set_url( ... url=current_url, ... delete=True ... ) True
Git remote set-branches.
Configure remote tracking branches for the remote.
Examples
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).set_branches('master') ''
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).set_branches('master', 'develop', add=True) ''
Git remote set-head.
Set or delete the default branch (HEAD) for the remote.
Examples
>>> remote = GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... )
The exact message wording varies across git versions (git 2.54+ reports “is unchanged” when HEAD already points at the branch), so assert on the stable parts rather than the literal string:
>>> 'master' in remote.set_head(auto=True) True >>> isinstance(remote.set_head('master'), str) True
Git remote update.
Fetch updates for the remote.
Examples
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).update() 'Fetching origin...'
>>> GitRemoteCmd( ... path=example_git_repo.path, ... remote_name='origin' ... ).update(prune=True) 'Fetching origin...'