小编rai*_*ert的帖子

如何使用git filter.gitignore.clean在diff期间过滤两个分支

情况

我把htm文件放到git中.然后我使用git diff来比较它们.我不感兴趣的文件之间存在差异,例如meta或comments标签.

我通常使用这种方法:如何告诉git忽略单独的行,即特定行代码的gitignore

我到目前为止做了什么

以下是我采取的步骤:

  1. 在中创建了gitattributes文件 <project root>/.gitattributes
  2. 添加了一行定义要过滤的文件:
    • *.htm filter=gitignore,即在所有.htm文件上运行过滤器gitignore
  3. 我的gitconfig中定义了过滤器:
    • $ git config --global filter.gitignore.clean "sed 's/<meta.*>//g'",即删除这些行
    • $ git config --global filter.gitignore.smudge cat,即从repo中提取文件时什么也不做
  4. 然后我在任意文件上做一个diff: git diff A..B -- file.htm > diff.txt

根据我目前所在的分支,我会得到不同的结果:

  • 在分支A上,我看到分支B的所有元标记仍然存在,并且它们显示为添加.
  • 在分支B上,我看到分支A的所有元标记仍然存在,并且它们显示为删除.

问题

我怎样才能做到这一点,无论我在哪个分支上,所有分支都应用过滤器?

git sed filter

5
推荐指数
1
解决办法
431
查看次数

Python 中的数据绑定?

我欣然承认,我可能用错误的名称来指代它,或者想要一些我不应该需要的东西。我只是想把它变成一件事:将对象属性链接在一起,这样如果我改变一个,我就会改变另一个。总是。直到我故意断开它们的连接。

那么让我们直接来看一个例子:

class Example:
    def __init__(self):
        self.name = ["Thing1"]

a = Example()
b = Example()
c = Example()

a.name = b.name

b.name.append("Thing2")
b.name.remove("Thing1")
Run Code Online (Sandbox Code Playgroud)

因此,现在a.nameb.name已连接,因此它们都是同一个可变变量的名称,现在读取为["Thing2"]. 此外,c.name是一个不同值的名称["Thing1"]

我现在已经完成了我想要做的事情:a.name并且b.name是相互关联的。但这是非常笨拙的。

我可以创建一个自定义列表类并创建一些方法来切换列表中的事物并在调用时返回一个不可变的,这样它看起来更像一个普通的不可变的。但这一切似乎都是黑客攻击。

关于使这个更清洁的任何想法?还是我只是想要一件坏事?

python data-binding

5
推荐指数
1
解决办法
5430
查看次数

标签 统计

data-binding ×1

filter ×1

git ×1

python ×1

sed ×1