2

在 Windows Mercurial 上,只要文件本身没有更改,就会忽略文件的创建/修改时间。Linux 显然无法做到这一点。在我的工作中,有些人在 Windows 上工作,有些人在 Linux 机器上工作,我们在 mercurial 中有很多误报的变化。

很好的例子是当我们从 YML 文件中重新生成 Doctrine 模型时。它们中的大多数保持不变,只有一两个变化,但都会重新生成,我必须检查所有这些并确保忽略它们的变化(恢复)是安全的,这样它们就不会搞砸犯罪。

有没有办法让 Linux 像 Windows 一样看到这些文件?

顺便说一句:我检查过,它与 EOL 问题或 UTF-8 BOM 或其他隐藏字符无关。只有时间戳改变。

提前致谢!

4

2 回答 2

2

好吧,如果 mtime 是唯一的更改,Linux 上的 Mercurial 不会提交文件:

~ $ mkdir 测试
~ $ cd 测试/
~/test $ hg 初始化
~/test $ echo a > a
〜/测试$ ls -l
共 4 个
-rw------- 1 个用户 users 2 Jul 23 13:21 a
~/test $ hg 添加一个
添加一个
~/test $ hg commit -m "添加一个"
一个
提交的变更集 0:e7d3dddff169
〜/测试$ ls -l
共 4 个
-rw------- 1 个用户 users 2 Jul 23 13:21 a
~/test $ 触摸一个
〜/测试$ ls -l
共 4 个
-rw------- 1 个用户 users 2 Jul 23 13:22 a
~/test $ hg 状态
~/test $ hg commit -m "Mtime changed on a" a
没有改变
〜/测试$

如果 ctime 被更改,它也不会检测到更改:

〜/测试$ ls -l
共 4 个
-rw------- 1 个用户 users 2 Jul 23 13:22 a
〜/测试$ rm一个
rm:删除常规文件'a'?是的
~/test $ echo a > a
〜/测试$ ls -l
共 4 个
-rw------- 1 个用户 users 2 Jul 23 14:27 a
~/test $ hg 状态
~/test $ hg commit -m "Ctime changed on a" a
没有改变
〜/测试$
于 2013-07-23T11:24:51.093 回答
1

对雷米回答的评论的后果

您在跨平台开发中遇到 EOL 的真正麻烦

在这种情况下,团队的唯一可能最好的朋友是EOL Extension,所有开发人员必须同时启用和使用它

我听说过尖叫,哭泣和发脾气,这个扩展程序相关,主要来自 Windows 用户,糟糕的是从来没有机会在自己的实际工作中使用它(我是 Winboy 并与 Winboys 交流)

于 2013-07-23T16:59:42.887 回答