Git Diff - 指示行移动

4

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


2
我对这个项目很感兴趣,但是我很难在其中找到一个问题。你具体在问什么? - grossvogel
这个问题对我来说不是很清楚。如果您想知道如何一般地过滤移动的行,那么这个问题已经在以下链接中提出:https://dev59.com/zXM_5IYBdhLWcg3wcCnc - Ciro Santilli OurBigBook.com
1个回答

0

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

虽然我不熟悉Visual Studio 2008或设计师文件,但我遇到了一个问题:我想在git中存储由另一个程序生成的文件。一些文件中的行顺序并不重要。在其他文件中,顺序也不重要,但简单的排序是不够的,因为它包含了嵌套数据结构。

我的解决方案是利用git中的过滤器在提交前修改文件内容。这需要两步配置。首先,您需要使用.gitattributes文件将过滤器分配给这些文件。

*.list      filter=sort

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

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

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

现在我提到我有两种不同的文件类型要处理,一个简单的,一个复杂的。对于包含嵌套数据类型(具体来说是Lua表)的复杂文件,我创建了一个脚本(在别人的帮助下),用于读取文件内容,排序每个嵌套部分,并在后续使用数据时不改变行为的情况下输出排序结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接