@@ -1025,6 +1025,40 @@ def update_repo(self, project_key, repository_slug, **params):
10251025 url = self ._url_repo (project_key , repository_slug )
10261026 return self .put (url , data = params )
10271027
1028+ def get_repo_forkable (self , project_key , repository_slug ):
1029+ """Return whether a Bitbucket Server/Data Center repository is forkable.
1030+
1031+ :param project_key: Project key, or a ``~user`` personal repository owner.
1032+ :param repository_slug: URL-compatible repository identifier.
1033+ :return: The repository's ``forkable`` flag, or ``None`` when omitted
1034+ by an older Bitbucket version.
1035+ """
1036+ return (self .get_repo (project_key , repository_slug ) or {}).get ("forkable" )
1037+
1038+ def set_repo_forkable (self , project_key , repository_slug , forkable ):
1039+ """Enable or disable forking for a Server/Data Center repository.
1040+
1041+ The caller requires repository administration permission. This uses the
1042+ repository ``PUT`` endpoint and preserves the behavior of
1043+ :meth:`update_repo` for all other repository fields.
1044+
1045+ :param project_key: Project key, or a ``~user`` personal repository owner.
1046+ :param repository_slug: URL-compatible repository identifier.
1047+ :param forkable: ``True`` to allow forks or ``False`` to prohibit them.
1048+ :return: Updated repository representation.
1049+ """
1050+ if not isinstance (forkable , bool ):
1051+ raise TypeError ("forkable must be a boolean" )
1052+ return self .update_repo (project_key , repository_slug , forkable = forkable )
1053+
1054+ def enable_repo_forking (self , project_key , repository_slug ):
1055+ """Enable forking for a Server/Data Center repository."""
1056+ return self .set_repo_forkable (project_key , repository_slug , True )
1057+
1058+ def disable_repo_forking (self , project_key , repository_slug ):
1059+ """Disable forking for a Server/Data Center repository."""
1060+ return self .set_repo_forkable (project_key , repository_slug , False )
1061+
10281062 def delete_repo (self , project_key , repository_slug ):
10291063 """
10301064 Delete a specific repository from a project. This operates based on slug not name which may
0 commit comments