0

不太确定如何清楚地解释这一点,但这里有。

由于 Tortoise-git 中的一个错误,我们以这样的情况结束;

我们所有的代码都应该在这样的目录结构下(这是 Symfony2 项目);

src/XYZ/OurExitingBundle
src/XYZ/AnotherExcitingBundle

但是,由于(我们认为)Tortoise-git 中的错误,当我们将代码拉到 linux 机器上时,我们得到了;

src/XYZ/OurExcitingBundle
src/XYZ/AnotherExcitingBundle
src/xyz/ourexcitingbundle
src/xyz/anotherexcitingbundle

(即实际目录,加上一个等效的小写字母)。使我们项目的文件似乎在 CamelCase 和小写目录之间随机拆分。

当我们在 Windows 机器上开发时,这在编码时并不重要,但是当代码被推送到我们的 linux 服务器时,一切都会失败,因为文件不在它们应该在的位置,或者文件存在于 CamelCase 目录中,但较新的版本位于小写目录中。

所以,我的问题是,有没有办法将小写目录中的所有文件“合并”到 CamelCase 目录中的等价文件中,最终只在 CamelCase 目录中提供所有最新代码?

非常感谢您的所有帮助。

4

1 回答 1

1

这里有两件事要做。最简单的方法是确保 Windows 上的每个客户端都有

core.ignorecase = true 

在他们的每个存储库上设置。这意味着 git 将忽略本地大小写的任何差异,并应使用与本地存储库中使用的相同大小写。

其次,所有间距不正确的路径都需要在存储库中进行更改。这有一个副作用,即团队将不得不提取这个新版本的历史。该filter-branch命令通常用于此类任务。这将是这样的:

git filter-branch --tree-filter 'test -d src/xyz && for f in `git ls-files src/xyz`; do git mv "$f" src/XYZ; done'

Tortoise Git 也进行了更改,以改进对处理区分大小写的支持:

因此,检查您使用的版本也是值得的。

于 2013-08-26T21:05:54.837 回答