Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork966
Expand file tree
/
Copy pathremote.py
More file actions
65 lines (49 loc) · 2.18 KB
/
remote.py
File metadata and controls
65 lines (49 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
importos
fromgit.utilimportjoin_path
from .headimportHead
__all__= ["RemoteReference"]
# typing ------------------------------------------------------------------
fromtypingimportAny,Iterator,NoReturn,Union,TYPE_CHECKING
fromgit.typesimportPathLike
ifTYPE_CHECKING:
fromgit.repoimportRepo
fromgitimportRemote
# ------------------------------------------------------------------------------
classRemoteReference(Head):
"""Represents a reference pointing to a remote head."""
_common_path_default=Head._remote_common_path_default
@classmethod
defiter_items(cls,repo:'Repo',common_path:Union[PathLike,None]=None,
remote:Union['Remote',None]=None,*args:Any,**kwargs:Any
)->Iterator['RemoteReference']:
"""Iterate remote references, and if given, constrain them to the given remote"""
common_path=common_pathorcls._common_path_default
ifremoteisnotNone:
common_path=join_path(common_path,str(remote))
# END handle remote constraint
# super is Reference
returnsuper(RemoteReference,cls).iter_items(repo,common_path)
@classmethod
defdelete(cls,repo:'Repo',*refs:'RemoteReference',**kwargs:Any)->None:
"""Delete the given remote references
:note:
kwargs are given for comparability with the base class method as we
should not narrow the signature."""
repo.git.branch("-d","-r",*refs)
# the official deletion method will ignore remote symbolic refs - these
# are generally ignored in the refs/ folder. We don't though
# and delete remainders manually
forrefinrefs:
try:
os.remove(os.path.join(repo.common_dir,ref.path))
exceptOSError:
pass
try:
os.remove(os.path.join(repo.git_dir,ref.path))
exceptOSError:
pass
# END for each ref
@classmethod
defcreate(cls,*args:Any,**kwargs:Any)->NoReturn:
"""Used to disable this method"""
raiseTypeError("Cannot explicitly create remote references")