Проблема в том, что вы можете создавать и обновлять несколько файлов с помощью чего-то вроде .create_commit
. Однако вы не можете сделать обратное, вы можете удалить файлы 1 на 1, используя функцию, указанную в документах.
Для клиента я использую boto3
и boto3.client('codecommit')
Ссылка - boto3 документы - удалить файл
Вопрос: Как удалить папки с бото3 и охкодкоммит?
Доступны только следующие 4 метода:
delete_branch()
delete_comment_content()
delete_file()
delete_repository()
Чтобы удалить папку, установите keepEmptyFolders=False
при вызове удалить файл для последнего файла в этой папке. Я не знаю ни одной функции API, которая удалит всю папку и все ее содержимое.
Примечание: по умолчанию пустые папки будут удаляться при вызове удалить файл.
Ваш вопрос был "как удалить папки?" Вы не можете, не прямо afaik. Вы удаляете файлы из папки, а затем сама папка будет удалена, когда папка станет пустой (если вы явно не указали keepEmptyFolders=True
при последнем вызове delete_file()
. Возможно, вы могли бы уточнить, что вы подразумеваете под «Я не могу удалить какие-либо каталог только один файл.» Вы спрашиваете «как мне удалить папку и все ее содержимое за один вызов?» Я не вижу способа сделать это.
точно, но вы не предоставили мне решение, я ценю ваш вклад, я опубликовал решение, перечислил все файлы внутри, а затем удалил их.
AWS codecommit не позволяет удалять каталоги (папки). Эта реализация работает, вместо того, чтобы сразу удалить весь каталог, вы находите все файлы, а затем удаляете их.
Базовый обзор.
.get_folder()
обратите внимание, что он дает гораздо больше информации*.get_folder
- чистый вывод не только путей к файлам, нам нужны только пути к файламГде REPOSITORY_NAME
— это имя вашего репозитория, а folderPath
— имя папка, которую вы хотите удалить.
files = codecommit_client.get_folder(repositoryName=REPOSITORY_NAME, folderPath=PATH)
Теперь мы используем эту информацию, чтобы создать коммит с удаленными файлами, нам пришлось выполнить некоторые манипуляции, так как параметр deleteFiles принимает только пути к файлам, а информация, которую мы получили с помощью .get_folder
, содержит гораздо больше, чем просто пути к файлам. Пожалуйста, замените branchName
, если вам нужно (на данный момент основной)
codecommit_client.create_commit(
repositoryName=REPOSITORY_NAME,
branchName='main',
parentCommitId=files['commitId'],
commitMessage=f"DELETED Files",
deleteFiles=[{'filePath':x['absolutePath']} for x in files['files']],
)
Это не проблема, моя проблема не в пустых каталогах, я не могу удалить какой-либо каталог только один файл.