Correct Repository.get_git_tree recursive use (#767)

The API docs for Repository.get_git_tree specify that the URL parameter
for fetching a tree recursively should be ?recursive=1, not a truthy
value. To not change the API we present, check if it is True before
setting it to 1. Change another callsite of Repository.get_git_tree to
specify recursive=False to make sure it doesn't appear in the query
string.

Fixes #560
This commit is contained in:
Steve Kowalik
2018-04-25 17:21:17 +08:00
committed by Wan Liuyang
parent d9071a9eda
commit bd0cf30970
3 changed files with 5 additions and 4 deletions
+3 -2
View File
@@ -1727,8 +1727,9 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(sha, (str, unicode)), sha
assert recursive is github.GithubObject.NotSet or isinstance(recursive, bool), recursive
url_parameters = dict()
if recursive is not github.GithubObject.NotSet:
url_parameters["recursive"] = recursive
if recursive is not github.GithubObject.NotSet and recursive:
# GitHub API requires the recursive parameter be set to 1.
url_parameters["recursive"] = 1
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/trees/" + sha,
@@ -2,7 +2,7 @@ https
GET
api.github.com
None
/repos/jacquev6/PyGithub/git/trees/f492784d8ca837779650d1fb406a1a3587a764ad?recursive=True
/repos/jacquev6/PyGithub/git/trees/f492784d8ca837779650d1fb406a1a3587a764ad?recursive=1
{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
None
200
+1 -1
View File
@@ -267,7 +267,7 @@ class Repository(Framework.TestCase):
self.assertEqual(tree.sha, "41cf8c178c636a018d537cb20daae09391efd70b")
def testCreateGitTreeWithBaseTree(self):
base_tree = self.repo.get_git_tree("41cf8c178c636a018d537cb20daae09391efd70b")
base_tree = self.repo.get_git_tree("41cf8c178c636a018d537cb20daae09391efd70b", recursive=False)
tree = self.repo.create_git_tree(
[github.InputGitTreeElement(
"Barbaz.txt",