Skip to content

Commit 75af085

Browse files
committed
Fix creating empty commit on PR (#2413)
* Fix creating empty commit on PR * unquoted revision for fetching files to copy as well
1 parent 1dd68a9 commit 75af085

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/huggingface_hub/hf_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3801,7 +3801,7 @@ def create_commit(
38013801

38023802
# Get latest commit info
38033803
try:
3804-
info = self.repo_info(repo_id=repo_id, repo_type=repo_type, revision=revision, token=token)
3804+
info = self.repo_info(repo_id=repo_id, repo_type=repo_type, revision=unquoted_revision, token=token)
38053805
except RepositoryNotFoundError as e:
38063806
e.append_to_message(_CREATE_COMMIT_NO_REPO_ERROR_MESSAGE)
38073807
raise
@@ -3822,7 +3822,7 @@ def create_commit(
38223822
repo_type=repo_type,
38233823
repo_id=repo_id,
38243824
headers=headers,
3825-
revision=revision,
3825+
revision=unquoted_revision,
38263826
endpoint=self.endpoint,
38273827
)
38283828
commit_payload = _prepare_commit_payload(

tests/test_hf_api.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,27 @@ def test_prevent_empty_commit_if_no_new_addition(self, repo_url: RepoUrl) -> Non
10491049
)
10501050
assert logs.records[1].levelname == "WARNING"
10511051

1052+
@use_tmp_repo()
1053+
def test_empty_commit_on_pr(self, repo_url: RepoUrl) -> None:
1054+
"""
1055+
Regression test for #2411. Revision was quoted twice, leading to a HTTP 404.
1056+
1057+
See https://github.com/huggingface/huggingface_hub/issues/2411.
1058+
"""
1059+
pr = self._api.create_pull_request(repo_id=repo_url.repo_id, title="Test PR")
1060+
1061+
with self.assertLogs("huggingface_hub", level="WARNING"):
1062+
url = self._api.create_commit(
1063+
repo_id=repo_url.repo_id,
1064+
operations=[],
1065+
commit_message="Empty commit",
1066+
revision=pr.git_reference,
1067+
)
1068+
1069+
commits = self._api.list_repo_commits(repo_id=repo_url.repo_id, revision=pr.git_reference)
1070+
assert len(commits) == 1 # no 2nd commit
1071+
assert url.oid == commits[0].commit_id
1072+
10521073
@use_tmp_repo()
10531074
def test_continue_commit_without_existing_files(self, repo_url: RepoUrl) -> None:
10541075
self._api.create_commit(

0 commit comments

Comments
 (0)