我正在尝试获取大量HTML文档的提交之间的更改,但我很快发现大多数更改并不重要,通常是日志记录,版本更改以防止缓存或外部脚本的结果。例如:
<a class="support-ga" target="_blank" href="#">0fb63cacd50e / 0fb63cacd50e @
-app-151</a>
+app-107</a>
<input type='hidden' name='csrfmiddlewaretoken'
-value='82NB5DdySoICu1mqcl0RZVk5dMCOVEQd'
+value='a0zBgxBevaBugotGpNKI6kMPsIsBbH44'
/>
前面的例子表明,查看这些更改可能不是很有趣或有用。
我想知道是否有一个git diff命令来忽略这种变化。另一种替代方案是基于相似性对差异进行排名。到目前为止,我一直在使用git diff --word-diff=porcelain --unified=0 HEAD~1 HEAD
命令,然后处理该输出以提取更改,计算Levenshtein距离并删除重复项。这有帮助,但考虑到git已经知道应该比较哪些行并且提供可配置数量的行作为上下文,这不是一个很好的解决方案。
答案 0 :(得分:1)
您可以尝试编写差异驱动程序以忽略特定模式 请参阅this discussion as an example。
DataTemplate
这只是初稿,因为public class AvatarIdToUrlConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
BitmapImage s;
if (value == null || parameter == null)
s = new BitmapImage(new Uri("https://something.com/assets/dd4dbc0016779df1378e7812eabaa04d.png"));
else
s = new BitmapImage(new Uri(String.Format("https://something.com/avatars/" + parameter.ToString() + "/" + value.ToString() + ".png?size=128")));
return s;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
public class IconIdToUrlConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
BitmapImage s;
if (value == null || parameter == null)
s = new BitmapImage(new Uri("https://something.com/assets/dd4dbc0016779df1378e7812eabaa04d.png"));
else
s = new BitmapImage(new Uri(String.Format("https://something.com/icons/" + parameter.ToString() + "/" + value.ToString() + ".png?size=128")));
return s;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
属性可能不在行的开头:您需要调整正则表达式,以便检测并忽略您希望跳过的更改的任何行。
OP Robert Smith指向(in the comments)更完整的命令:
echo '*.html filter=ignore_value' >> .gitattributes
git config filter.ignore_value.clean "sed -e '/^value= .*$/d'"