2010-11-24 93 views
4

我正在开发一个脚本以便与git diff一起使用,以便能够“过滤”仅仅移动到文件中的行。使用Designer文件时,Visual Studio 2008已经变得非常痛苦。它有时似乎坚持以不同的顺序重写整个文件。这使得很难看到文件的真实变化。我将git diff管道输入到脚本中来调整git diff的输出。我可以从输出中删除线条,或者我可以用不同的符号代替+/-来指示移动,但我不确定要使用哪些符号。Git Diff - 指示行移动

+2

我对这项工作很感兴趣,但我很难在那里找到问题。你到底在问什么? – grossvogel 2011-03-01 19:29:48

回答

0

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

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

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

*.list  filter=sort 

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

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

这种简单的过滤器的结果是,当文件被提交,而不是从创建它们的程序随机的顺序是该行回购,他们是字母数字,只添加,删除排序,并在差异中出现变化。

现在我提到我有两种不同的文件类型,一个简单的和一个复杂的。对于包含嵌套数据类型的复杂数据类型(Lua表具体),我创建了一个脚本来读取文件内容,对每个嵌套节进行排序并输出排序结果而不改变行为当数据被使用时。