[Python] PermissionError: [WinError 5] Access is denied:...

Discussão em 'Python' iniciado por Stack, Dezembro 31, 2024.

  1. Stack

    Stack Membro Participativo

    I am trying to clone a git repository using the repository URL, username and token which I receive from frontend. A folder is created with the name of the repository. After taking essential information from the newly created folder, I am trying to delete the folder using shutil.rmtree. But I get this error:


    PermissionError: [WinError 5] Access is denied: 'team-sortifie.git\.git\objects\pack\pack-71df0c364b51d2df28502deb6e1c1c7e418bd961.idx'
    ​

    Here's my code:

    @classmethod
    def fetch_all_branches_with_creation_date(cls, repo_url):
    branch_info_list = []
    repo_name = ''
    repository_users = []

    try:
    # Clone the repository to a temporary directory
    repo_name = os.path.basename(repo_url.rstrip('/'))
    repo = Repo.clone_from(repo_url, repo_name)

    # Fetch repository users
    repository_users = cls.fetch_repository_users_remotely(repo)

    # Get all branches of the repository
    branches = repo.remote().refs

    # Process each branch
    for branch in branches:
    branch_info = {
    'branch_name': branch.name,
    'branch_creation_date': branch.commit.authored_datetime.strftime('%Y-%m-%d'),
    'latest_commit_subject': branch.commit.message,
    'latest_commit_date': branch.commit.committed_datetime.strftime('%Y-%m-%d'),
    'author_name': branch.commit.author.name,
    'tags': [],
    # Check if the branch is locked
    'is_locked': cls.is_branch_locked(branch),
    # Check if the branch is deleted
    'is_deleted': cls.is_branch_deleted(branch)
    }

    # Get tags associated with the branch
    tags = repo.tags
    for tag in tags:
    if tag.commit.hexsha.startswith(branch.commit.hexsha):
    tag_info = {
    'tag_name': tag.name,
    'tag_creation_date': tag.commit.committed_datetime.strftime('%Y-%m-%d')
    }
    branch_info['tags'].append(tag_info)

    # Append branch information to the list
    branch_info_list.append(branch_info)

    except GitCommandError as e:
    # If there's an error, it could be due to invalid credentials or repository URL
    error_message = Repositoryanalytics.extract_error_message(str(e))
    current_app.logger.debug(error_message)

    finally:
    # Remove the repository directory if it exists
    if repo_name:
    shutil.rmtree(repo_name)

    return branch_info_list, repository_users


    I have already tried these methods:

    1. Tried running the server as administrator.
    2. Tried rmdir instead of shutil, like this:

    finally:
    # Remove the repository directory if it exists
    if repo_name:
    if configs.platform['isWIN'] == 'TRUE':
    subprocess.run(
    ["rmdir", "/Q", "/S", repo_name], shell=True)
    else:
    shutil.rmtree(repo_name)


    1. Right clicked the main backend folder -> Properties -> Security -> Add -> Advanced -> Find Now -> In the search results selected IUSR , then under security tab under the permissions, checked on all the boxes under Allow. [​IMG]

    None of these are working. Why exactly is this issue occurring and what can I try now to solve this?

    Continue reading...

Compartilhe esta Página