python-3.x 许可错误:[WinError 5]访问被拒绝:电子邮件:info @ git @ git. com

r55awzrz  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(115)

我试图使用Repository url、username和token克隆一个git仓库,这些都是我从前端收到的。将以存储库的名称创建一个文件夹。从新创建的文件夹中获取重要信息后,我尝试使用shutil. rmtree删除该文件夹。但是我得到了这个错误- PermissionError:[WinError 5]访问被拒绝:电子邮件:info @ git @ git. com

@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

我已经试过这些方法了-
1.已尝试以管理员身份运行服务器。
1.已尝试rmdir而不是shutil -

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.右键单击后台主文件夹->属性->安全->添加->高级->查找->在搜索结果中选择IUSR,然后在安全选项卡下的权限,选中允许下的所有框。Under Security Tab
这些都不管用。为什么会出现这个问题,我现在可以尝试什么来解决这个问题?请在这件事上帮帮我…

cygmwpex

cygmwpex1#

您看到的错误消息是PermissionError,当运行脚本的用户没有足够的权限访问文件或文件夹% 1时会发生。
根据您的描述,您似乎已经尝试以管理员身份运行服务器并更改文件夹的安全设置。但是,这些解决方案并不适合你。
出现此错误的一个可能原因是您复制的文件夹中可能有另一个.git文件,这导致您的project 2中有两个存储库。这可能会导致.idx文件出现问题并导致PermissionError。
要解决此问题,请尝试删除项目文件夹中的任何额外.git文件,然后再次运行脚本。这应该可以解决问题。
我希望这对你有帮助!如果你有任何其他问题或顾虑,请告诉我。

相关问题