Git Diff - 指示一条线移动

时间:2010-11-24 16:45:51

标签: git windows-forms-designer git-diff

我正在开发一个与git diff一起使用的脚本,以便能够“过滤掉”只是在文件中移动的行。使用Designer文件时,Visual Studio 2008变得很痛苦。有时似乎坚持以不同的顺序重写整个文件。这使得很难看到文件的真正变化。我正在将git diff用于脚本来调整git diff的输出。我可以从输出中删除行,或者我可以用不同的符号替换+/-来表示移动但是我不确定要使用哪些符号。

1 个答案:

答案 0 :(得分:0)

这不是问题的答案,而是对所述问题的可能替代解决方案。

我不熟悉Visual Studio 2008或Designer文件,但我遇到了一个解决方案,我希望将文件存储在由另一个程序生成的git中。某些文件中的行顺序根本不重要。在其他文件中,顺序并不重要,但简单的排序是不合适的,因为它包含嵌套的数据结构。

我的解决方案是在git中使用过滤器在提交之前更改文件内容。这分为两部分。首先,您需要使用.gitattributes文件为文件指定过滤器。

*.list      filter=sort

接下来,需要在配置文件中定义过滤器的行为。这可以在您的用户配置~/.gitconfig或repos配置.git/config中完成。这只是本地的,不会作为回购的一部分自动与他人共享,所以如果你也希望其他人这样做,那么你需要告诉他们。

[filter "sort"]
    clean = sort
    smudge = cat

这个简单过滤器的结果是当文件被提交到repo时,而不是从创建它们的程序的随机顺序中的行,它们按字母数字排序,只有添加,删除和更改出现在差异。

现在我提到我有两种不同的文件类型,一种是简单的,一种是复杂的。对于包含嵌套数据类型(特定的Lua表)的复杂数据类型,我创建了(通过其他人的大量帮助)一个脚本来读取文件内容,对每个嵌套部分进行排序,并输出排序结果而不改变行为当数据稍后使用时。