Xys*_*Xys 31 macos xcode ios swift-package-manager
我的项目的一些依赖项托管在私有存储库上。它在大多数情况下都有效,但有时当我使用 git 更改当前分支时,我会收到此错误:
\n\xe2\x9d\x8c git@my_private_repo.git: An unknown error occurred. reference \'refs/remotes/origin/main\' not found (-1)\nRun Code Online (Sandbox Code Playgroud)\n从那时起,就不可能编译了,我唯一的选择就是重置 SPM 缓存,这需要花费很多时间。
\n知道造成这种情况的原因以及如何解决吗?
\nSrđ*_*đan 26
就像其他人回答的那样,可以通过删除项目的派生数据目录中的 Swift 包缓存以及~/Library/Caches/org.swift.swiftpm. 更好的是,仅删除受影响的remotes目录,但查找包和文件夹可能非常耗时。
这是我快速整理的一个小脚本,它将删除remotes全局 Swift Package Manager 缓存和项目的派生数据存储库目录中指定的所有目录。
#!/bin/bash
if [[ $# -eq 0 ]] ; then
echo 'Please call the script with the name of your project as it appears in the derived data directory. Case-insensitive.'
echo 'For example: ./fix-spm-cache.sh myproject'
exit 0
fi
# Delete all directories named "remotes" from the global Swift Package Manager cache.
cd ~/Library/Caches/org.swift.swiftpm/repositories
for i in $(find . -name "remotes" -type d); do
echo "Deleting $i"
rm -rf $i
done
# Find derived data directories for all projects matching the script argument, and
# delete all directories named "remotes" from source package repositories cache for those projects.
cd ~/Library/Developer/Xcode/DerivedData/
for project in $(find . -iname "$1*" -type d -maxdepth 1); do
for i in $(find "$project/SourcePackages/repositories" -name "remotes" -type d); do
echo "Deleting $i"
rm -rf $i
done
done
Run Code Online (Sandbox Code Playgroud)
如果将代码保存在名为 的文件中fix-spm-cache.sh,则可以chmod +x fix-spm-cache.sh使该文件可执行。./fix-spm-cache.sh myproject之后,当您在 Xcode 中遇到错误时,只需使用项目名称运行脚本即可,例如。
您可以在运行脚本时保持 Xcode 打开。脚本执行完毕后,再次尝试解析或更新您的包。它应该可以工作,并且应该相对较快,因为我们没有删除整个缓存。
这应该可以解决本主题中提到的错误,以及SwiftPM.SPMRepositoryError error 5Xcode 13 中发生的臭名昭著的错误,这可能是相同的错误,只是消息不同。
mrw*_*t09 14
我想我可能在这里找到了问题!经过大量挖掘后,似乎 Xcode 和 Swift PM 在使用 git@ 而不是 https:// 的存储库上存在错误
使用 ssh,我们在缓存和派生数据中获得了对远程/源/主的挂起引用。使用 https 时,情况并非如此。这是有道理的,因为我们项目中使用 ssh 的唯一部门是我们的内部部门。
我通过在我们的项目中添加全新的第 3 方依赖项 git@github.com:jpsim/Yams.git 来测试这一点,并看到 org.swift.swiftpm 中的缓存更新不正确。
更新:10 天后,这似乎一直是问题所在。然而,即使在更改引用之后,在 Xcode 不再有任何对存储git@库的引用之前,也需要完整的 DerivedData/SPM 缓存/Package.resolved 擦除。我已针对此错误向 Apple 提交了反馈。
kal*_*jul 12
在 XCode 和 AppCode 中出现此问题(没有“重置包缓存”按钮,并且在删除 DerivedData 文件夹时需要永远重新索引整个 iOS 框架)之后,我尝试最小化需要删除的文件夹。
我最终得到以下结果:一旦收到错误消息git@library-project.git: An unknown error occurred. reference 'refs/remotes/origin/main' not found (-1),您
~/Library/Developer/Xcode/DerivedData/)(对于 AppCode,它位于~/Library/Caches/JetBrains/AppCode2022.2/DerivedData)<YourProject>-<RandomCharacters>/SourcePackages/repositories/<FailingLibraryProject>-<RandomCharacters>/refs/remotes文件夹这就是所需要的一切——至少对我来说是这样。我想您需要对每个失败的图书馆项目重复这些步骤。最好的事情是:无论我切换分支或依赖版本多少次,我都不需要再次执行此操作:)
今天似乎对我有用的东西,只需要几秒钟,并且不会删除派生数据文件夹:
几秒钟后,一切似乎又恢复正常了。
| 归档时间: |
|
| 查看次数: |
6865 次 |
| 最近记录: |