Mercurial 保护壳折叠问题

发布于 2024-12-01 04:38:10 字数 783 浏览 1 评论 0原文

这不是一个过去没有出现过的独特问题,但目前还没有一个解决方案对我有帮助。

我的案例 - 由 Perforce(由我公司的中央 SCM)团队维护的巨大存储库。现在他们改变了一些东西,所有单独的团队都管理自己的 SCM,并且仅使用主要的 perforce 进行定期更新(不要问我为什么 - 我对此没有发言权),

但是我的问题 - 我们为团队的项目迁移到 Mercurial。

它巨大 - 大约 300k 文件并且可跨平台编译。

我设置的 Mercurial 存储库在 Linux 上运行良好,但在 Windows 上我遇到大小写折叠错误,并且无法签出或克隆存储库。

我尝试了 https://www.mercurial-scm.org/wiki/CaseFolding

结果看起来像这个

  1. hgfold 扩展 - 不起作用 - 它抛出一些未知的 python 异常,有人遇到了这个问题,扩展的维护者知道它,但没有立即修复。

  2. 不可能简单地重命名文件,我们的存储库将会损坏,我必须使用相同的文件名,并且在 Linux 中它运行良好并且正在使用。所以我不知道重命名是否是一个选项。

  3. Perforce 处理得很好,但正如我所说,我在这里没有发言权。

那么这里还有其他出路吗? SVN 可以很好地处理案件折叠吗?任何帮助对我来说都非常有用。

This is not a unique problem that has not been there in the past, but none of the solutions have helped me yet.

My Case - A huge repository that was maintained by Perforce(by my company's central SCM) team. Now they change something, and all individual teams manage their own SCM and use the main perforce only for regular updates(Don't ask me why - i have no say in this)

however my problem - we moved to Mercurial for our team's projects.

Its huge - about 300k files and cross platform compilable.

The mercurial repo that i set up works well with Linux, but on windows i get the case folding error and not able to checkout or clone repos.

I tried the solutions from https://www.mercurial-scm.org/wiki/CaseFolding

and the result looks like this

  1. hgfold extension - does not work - it throws some unknown python exception and someone faced this issue and the maintainer of the extension is aware of it but has no immediate fix.

  2. It is not possible to simply rename the files, our repo will break, i have to live with the same file name, and in linux it works great and are being used. So i don't know if renaming is an option.

  3. Perforce handles it well, but as i said i have no say here.

So is there any other way out here??
Can SVN handle casefoldings well?? Any help is of very use to me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清醇 2024-12-08 04:38:10

Mercurial书上有一章 区分大小写

只需找到附近的 Linux 或 Unix 机器,克隆问题存储库
到它上面,并使用 Mercurial 的 hg rename 命令来更改名称
任何有问题的文件或目录,这样它们就不会再造成
大小写折叠冲突。提交此更改,hg pull 或 hg Push
跨到您的 Windows 或 MacOS 系统,然后 hg 更新到修订版
与不冲突的名称。

问题在于,并没有真正有效的自动化方法来解决案例冲突。文件名通常在其他文件中引用,例如 Makefiles 或包含语句或在源中读取的配置文件。因此,任何自动解决此问题的方法都可能会破坏某些内容。

从以上章节的评论中可以得出一些提示:

Grant Baillie 2009-08-13 在 Mac 上,您还可以在您的计算机上进行此修复
计算机通过创建包含区分大小写的磁盘映像
文件系统。启动磁盘实用程序(在/Applications/Utilities中),单击
文件->新->空白磁盘映像...,然后选择“Mac OS Extended”
(日志式,区分大小写)”作为卷格式。

您可以

find . -print | sort -f | uniq -di 

在区分大小写的文件系统上使用它来查找大小写冲突的所有文件名。

There is a chapter in the Mercurial book chapter Case sensitivity

Just find a nearby Linux or Unix box, clone the problem repository
onto it, and use Mercurial's hg rename command to change the names of
any offending files or directories so that they will no longer cause
case folding conflicts. Commit this change, hg pull or hg push it
across to your Windows or MacOS system, and hg update to the revision
with the non-conflicting names.

The problem is that there is not really a working automated way to resolve cases clashes. Filenames are often referenced in other files like Makefiles or include statements or config file reads in source. So any way to resolve this automatically is prone to break something.

From the comments on the above chapters a few tips:

Grant Baillie 2009-08-13 On a Mac, you can also do this repair on your
computer by creating a disk image containing a case-sensitive
filesystem. Launch Disk Utility (in /Applications/Utilities), click
File -> New -> Blank Disk Image ..., and choose "Mac OS Extended
(Journaled, Case-sensitive)" as the Volume Format.

and you could use

find . -print | sort -f | uniq -di 

on a case sensitive filesystem to find all filenames that clash on case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文