在Windows上,只要文件本身没有改变,Mercurial就会忽略文件的创建/修改时间。 Linux显然不能这样做。在我的工作中,有些人在Windows上工作,有些人在Linux机器上工作,我们在mercurial中有很多误报。
很好的例子是我们从YML文件重新生成Doctrine模型。他们中的大多数保持不变,变化是一两个,但都得到了重生,我必须经历所有这些并确保,忽略他们的变化(恢复)是安全的,所以他们不会搞砸mercurial提交。
有没有办法让Linux像Windows一样看到这些文件?
顺便说一句:我已经检查过它与EOL问题或UTF-8 BOM或其他隐藏字符无关。只有时间戳会发生变化。
提前致谢!
答案 0 :(得分:2)
嗯,如果mtime是唯一的改变,那么Linux上的Mercurial不会提交文件:
~ $ mkdir test ~ $ cd test/ ~/test $ hg init ~/test $ echo a > a ~/test $ ls -l total 4 -rw------- 1 user users 2 Jul 23 13:21 a ~/test $ hg add a adding a ~/test $ hg commit -m "Adding a" a committed changeset 0:e7d3dddff169 ~/test $ ls -l total 4 -rw------- 1 user users 2 Jul 23 13:21 a ~/test $ touch a ~/test $ ls -l total 4 -rw------- 1 user users 2 Jul 23 13:22 a ~/test $ hg status ~/test $ hg commit -m "Mtime changed on a" a nothing changed ~/test $
如果更改ctime,它也不会检测到更改:
~/test $ ls -l total 4 -rw------- 1 user users 2 Jul 23 13:22 a ~/test $ rm a rm: remove regular file ‘a’? y ~/test $ echo a > a ~/test $ ls -l total 4 -rw------- 1 user users 2 Jul 23 14:27 a ~/test $ hg status ~/test $ hg commit -m "Ctime changed on a" a nothing changed ~/test $
答案 1 :(得分:1)
对Remi的回答的评论的后果
您在跨平台开发中遇到EOL真正的麻烦
在这种情况下团队成员的唯一可能和最佳朋友是EOL Extension,必须同时启用并由所有开发人员使用
我听说过尖叫,哭泣和发脾气,这个扩展相关,主要来自Windows用户,从来没有机会在自己的实际工作中使用它(我是Winboy并与Winboys沟通)