@@ -68,6 +68,10 @@ class CredentialNotFoundError(SCMError):
68
68
"""Error occurred while retrieving credentials/no credentials available."""
69
69
70
70
71
+ class CredentialQuitError (SCMError ):
72
+ """Credential helper returned quit=1."""
73
+
74
+
71
75
class CredentialHelper (ABC ):
72
76
"""Base git-credential helper."""
73
77
@@ -174,6 +178,9 @@ def get(self, credential: "Credential", **kwargs) -> "Credential":
174
178
continue
175
179
if not credentials :
176
180
raise CredentialNotFoundError ("No credentials found" )
181
+ quit_ = credentials .get ("quit" )
182
+ if quit_ is not None and quit_ .lower () in ("true" , "1" ):
183
+ raise CredentialQuitError ("Helper returned quit=1" )
177
184
return Credential (** credentials )
178
185
179
186
def store (self , credential : "Credential" , ** kwargs ):
@@ -539,6 +546,9 @@ def helpers(self) -> List["CredentialHelper"]:
539
546
540
547
def fill (self , interactive : bool = True ) -> "Credential" :
541
548
"""Return a new credential with filled username and password."""
549
+ if self .username and self .password :
550
+ return Credential (** self )
551
+
542
552
try :
543
553
return memory_helper .get (self , interactive = False )
544
554
except CredentialNotFoundError :
@@ -549,13 +559,17 @@ def fill(self, interactive: bool = True) -> "Credential":
549
559
return helper .get (self )
550
560
except CredentialNotFoundError :
551
561
continue
562
+ except CredentialQuitError as exc :
563
+ raise CredentialNotFoundError (
564
+ f"No available credentials for '{ self } '"
565
+ ) from exc
552
566
553
567
try :
554
568
return memory_helper .get (self , interactive = interactive )
555
569
except CredentialNotFoundError :
556
570
pass
557
571
558
- raise CredentialNotFoundError (f"No available credentials for '{ self . url } '" )
572
+ raise CredentialNotFoundError (f"No available credentials for '{ self } '" )
559
573
560
574
def approve (self ):
561
575
"""Store this credential in available helpers."""
0 commit comments