4

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

4

1 回答 1

0

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

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

我的解决方案是利用 git 中的过滤器在文件内容提交之前对其进行更改。这被配置为两部分。首先,您需要使用.gitattributes文件为文件分配过滤器。

*.list      filter=sort

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

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

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

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

于 2011-03-01T20:58:07.370 回答