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