Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 自动接受多变的更改块_Mercurial_Tortoisehg - Fatal编程技术网

Mercurial 自动接受多变的更改块

Mercurial 自动接受多变的更改块,mercurial,tortoisehg,Mercurial,Tortoisehg,我有一个非常大的repo,有数千个文件,可以通过我无法控制的自动过程定期更新(这是为了Unity 3D,为了它的价值) 例如,如果我将Unity升级到新版本,它将重新导入所有纹理,并可能在数千个.meta文件中添加一行,这些文件对应于以前不存在的新序列化数据 显然,审查成千上万的文件是可怕的。不过,大多数时候,我可以快速识别一个特定的差异,我只想自动检查所有具有相同差异的文件,并将它们排除在外,然后查看剩下的内容:我可能不知道的其他差异 例如,我刚刚提交了4000多个文件,其中包含以下差异:

我有一个非常大的repo,有数千个文件,可以通过我无法控制的自动过程定期更新(这是为了Unity 3D,为了它的价值)

例如,如果我将Unity升级到新版本,它将重新导入所有纹理,并可能在数千个.meta文件中添加一行,这些文件对应于以前不存在的新序列化数据

显然,审查成千上万的文件是可怕的。不过,大多数时候,我可以快速识别一个特定的差异,我只想自动检查所有具有相同差异的文件,并将它们排除在外,然后查看剩下的内容:我可能不知道的其他差异

例如,我刚刚提交了4000多个文件,其中包含以下差异:

因此,模式很容易找到:

-  textureFormat: -5
+  textureFormat: -1

我想我可以写一个脚本,或者一个乌龟工具来完成,我只是不知道从哪里开始。我需要迭代所有更改的文件/块,匹配一个模式,提交块…

我知道没有工具可以完全满足您的要求。但是,我相信为这样的应用程序编写一个小型bash脚本或使用命令行相对容易:

hg diff --nodates --noprefix -U 0 | grep '^+' | grep -v '+++' | sort | uniq -c
将按出现次数的降序列出当前差异的插入行,因此最常出现的差异将排在第一位

例如,通过该列表,您可以获得与新插入的模式匹配的文件列表

hg files "set:grep('^ textureFormat: -1')"
应该为您提供具有该模式的所有文件(尽管它是新的还是不新的)。您可能希望检查这些文件,看看它们的差异是否包含其他内容:

hg diff "set:grep('^  textureFormat: -1')"
现在,如果diff输出不适合您,您可以利用结果,甚至排除单个文件:

hg commit "set:grep('^ textureFormat: -1') and not 'unwantedFilename.cpp'"
在上面的命令中,我使用了文件集功能和接受正则表达式的
hg grep
。查看
hg-help-grep
hg-help-fileset
hg-help-patterns
以获得更深入的解释