【发布时间】:2020-10-12 11:05:26
【问题描述】:
今天开始出现一个问题,我们的一个分支机构表现得很奇怪。 如果分支被拉出,则文件被标记为并被删除,作为非暂存更改。与分支的服务器版本相比,这个文件肯定存在。
如果我对文件执行 git checkout,当然会撤消删除操作。 如果我进一步删除此分支的本地版本并再次拉取,则不会将同一文件标记为删除。
此文件的最新更改是在三个多月前。几天前的最新提交。每晚 CI 管道运行良好。
我们正在使用 Azure DevOps 和所有包含的功能,例如使用多个代理等构建管道。
有什么线索吗?
我应该补充一下,这会导致巨大的问题,因为我们的构建从今天开始无法运行。因为构建步骤拉动分支 -> 获得相同的删除标记 -> 构建解决方案失败。
会发生以下情况,从一个完全干净的、无关的、没有任何变化的结帐中签出:
git checkout <corrupt branch>
git status
如果我们在结帐之前或之后拉动分支,我们会得到相同的结果,而损坏的分支尚未完全同步。
编辑,我们注意到:
警告:以下路径发生冲突(例如区分大小写的路径 在不区分大小写的文件系统上)并且只有一个来自相同的文件系统 碰撞组在工作树中:
没有对文件夹路径或文件进行任何更改。数百个项目使用此路径。只有其中一个人认为路径已被复制。 有什么想法吗?
【问题讨论】:
-
您可以在您的问题中添加一些命令-/git status 输出吗?这可能会有所帮助。
-
我想到的,发生在我身上的事情是
--autostash,但我猜你已经尝试了足够的方法来排除这种情况。--autostash可以存储和恢复您的存储,围绕拉动(本地修改无法完成)。这包括恢复删除。并且--autostash可以配置为始终在拉取期间发生。 -
这个分支被拉到的每台机器上都会发生这种情况。多个工作站,更重要的是没有共享本地设置的全新虚拟机和容器。很长一段时间以来,我们都没有更改构建中的任何内容。这发生在一夜之间。
-
根据您的错误消息,您使用的是不区分大小写的文件系统。您使用的是哪种操作系统?
-
我们解决了。这是愚蠢的。我们正在使用窗户。问题确实是不区分大小写。最大的问题是,没有任何历史表明这条道路会不断变化。很明显,有些事情发生了变化。事实证明,我们的一位开发人员已将该文件完全移动到小写路径。在与问题出现的位置无关的分支/构建中。它显示了我们现在已经纠正的泄漏构建和脏工作区的一些问题。我们还关闭了在路径中提交更改的功能,这仅在大小写上有所不同。幸运的是,它相当孤立。
标签: git azure-devops continuous-integration