我正在开发一个脚本,用于与git diff一起使用,以便能够“过滤掉”文件中仅仅是移动的行。在处理Designer文件时,Visual Studio 2008变得非常麻烦。有时它似乎坚持以不同的顺序重新编写整个文件。这使得很难看到文件的真实更改。我将git diff传输到一个脚本中,以调整git diff的输出。我可以从输出中删除这些行,也可以用不同的符号替换+/-以表示移动,但我不确定要使用哪些符号。
我正在开发一个脚本,用于与git diff一起使用,以便能够“过滤掉”文件中仅仅是移动的行。在处理Designer文件时,Visual Studio 2008变得非常麻烦。有时它似乎坚持以不同的顺序重新编写整个文件。这使得很难看到文件的真实更改。我将git diff传输到一个脚本中,以调整git diff的输出。我可以从输出中删除这些行,也可以用不同的符号替换+/-以表示移动,但我不确定要使用哪些符号。
这不是对问题的答案,而是对所描述问题的可能替代解决方案。
虽然我不熟悉Visual Studio 2008或设计师文件,但我遇到了一个问题:我想在git中存储由另一个程序生成的文件。一些文件中的行顺序并不重要。在其他文件中,顺序也不重要,但简单的排序是不够的,因为它包含了嵌套数据结构。
我的解决方案是利用git中的过滤器在提交前修改文件内容。这需要两步配置。首先,您需要使用.gitattributes
文件将过滤器分配给这些文件。
*.list filter=sort
接下来需要在配置文件中定义过滤器的行为。这可以在用户配置文件~/.gitconfig
或存储库配置文件.git/config
中完成。这仅限于本地,不会自动与其他人共享作为存储库的一部分,因此如果您希望其他人也这样做,则需要告诉他们。
[filter "sort"]
clean = sort
smudge = cat
这个简单的过滤器的结果是,当提交文件到代码库时,行不再是来自创建它们的程序的随机顺序,而是按字母数字顺序排序,并且只有添加、删除和更改出现在差异中。
现在我提到我有两种不同的文件类型要处理,一个简单的,一个复杂的。对于包含嵌套数据类型(具体来说是Lua表)的复杂文件,我创建了一个脚本(在别人的帮助下),用于读取文件内容,排序每个嵌套部分,并在后续使用数据时不改变行为的情况下输出排序结果。