小编fra*_*ans的帖子

如何使 Git 预提交行为取决于提交消息?

我知道要让 git 在提交之前检查提交消息,您可以实施hooks/commit-msg. 但现在想象一下您想让hooks/pre-commit脚本根据提交消息表现不同的情况?

例如(在非常宽松的环境中)您可能想检查[nocheck]提交消息中是否有一个始终让提交检查通过的标签。

或者 - 在更严格的环境中 - 您可能希望对每个文件进行注释(因此单独列出)。

或者您可能想根据相关文件检查票证 ID。

ETC...

除了在 commit-msg 中进行实际检查(这似乎违反直觉)之外,还有其他方法可以实现此目的吗?

git commit-message commit pre-commit-hook

2
推荐指数
1
解决办法
504
查看次数

如何在CMake中跟踪丢失的变量值?

编辑:接受的答案还不能解决我的问题,但是它回答了我所提出的问题-如果您可以通过下面描述的实际问题帮助我,您可以回答问题。

我有一个CMake项目,该项目使用的框架需要设置变量(即https://github.com/queezythegreat/arduino-cmake,需要使用ARDUINO_SDK_PATH

奇怪的是,我在命令行上设置了该变量后,它首先具有一个值,但是看起来它会在一段时间后消失。

我在跑

cmake -DARDUINO_SDK_PATH=/path/to/sdk ..
Run Code Online (Sandbox Code Playgroud)

..并收到一条错误消息,告诉我未设置。在我的顶部CMakeLists.txt以及在该框架的检查变量的内部深处输出值,可以得到如下信息:

>>> ARDUINO_SDK_PATH (beginning): '/home/me/project/arduino-1.8.2'
>>> ARDUINO_SDK_PATH (before check): '/home/me/project/arduino-1.8.2'
-- The C compiler identification is GNU 6.2.0
-- The CXX compiler identification is GNU 6.2.0
-- Check for working C compiler: /usr/bin/avr-gcc
>>> ARDUINO_SDK_PATH (before check): ''
CMake Error at /home/me/project/arduino-cmake/cmake/ArduinoToolchain.cmake:84 (message):
  Could not find Arduino SDK (set ARDUINO_SDK_PATH)!
Call Stack (most recent call first):
  /home/me/project/build/CMakeFiles/3.6.2/CMakeSystem.cmake:6 (include)
  /home/me/project/build/CMakeFiles/CMakeTmp/CMakeLists.txt:3 (project)

CMake Error: Internal CMake …
Run Code Online (Sandbox Code Playgroud)

variables trace cmake fedora-25

2
推荐指数
1
解决办法
814
查看次数

如何为列表中的每个邻居调用一个函数?

给定一个列表[a, b, c, d]我想调用一个foo()返回数字并乘以返回值的函数:

result = foo(a, b) * foo(b, c) * foo(c, d)
Run Code Online (Sandbox Code Playgroud)

这个pythonic单线程是什么?我内心的C程序员会开始摆弄索引和循环,但我知道必须有更好的方法..

python list generator

2
推荐指数
1
解决办法
42
查看次数

在 py.test 中是否可以报告测试运行中生成的任意值?

我知道有用于性能测试和 py.test 分析的插件,但是有没有办法生成在测试后报告或以某种方式访问​​的任意值?

想象一下我有一个这样的测试

def test_minimum_learning_rate():
    """Make some fancy stuff and generate a learning performance value"""
    learning_rate = fancy_learning_function().rate
    pytest.report("rate", learning_rate)
    assert learning_rate > 0.5
Run Code Online (Sandbox Code Playgroud)

pytest.report(..)条线就是我想要(但不存在,不是吗?)

现在我想要将minimum_learning_rate[rate]实际测试结果与报告一起写入(或者至少在屏幕上)。

Jenkins 的一些插件真的很好,它可以根据这些数据创建一个漂亮的图表。

这有典型的措辞吗?我一直在寻找kpiarbitrary valuesuser defined values还没有任何运气..

python performance report kpi pytest

2
推荐指数
1
解决办法
608
查看次数

使用 PyQt5 的语法高亮编辑器

我目前正在开发基于 PyQt5 的应用程序,我可以使用(嵌入式)编辑器为 YAML(可能还有 JSON)提供一些语法突出显示。

我希望 Qt 有一些内置的功能,但我发现的只是一些讨论和一些像这样的手工实现。

是否有一种简单的方法可以在现有小部件上激活语法突出显示?或者我可能会使用一个紧凑的 3rd 方小部件?

python syntax-highlighting pyqt pyqt5

2
推荐指数
1
解决办法
987
查看次数

使用 PIL,我可以以可定制的方式组合两个(或更多)频段吗?

我想“分解”一个Image(即split()),通过将其中一个通道与另一个通道组合来修改它,然后再次重新“组合”(即merge())它们。

此示例应使用我希望存在的功能将边缘映射到红色通道来突出显示边缘:

from PIL import Image, ImageFilter
base = Image.open("example.jpg")
base.show()
Run Code Online (Sandbox Code Playgroud)

基础图像

edges = (base
    .convert("L")
    .filter(ImageFilter.Kernel((3, 3), (-1, -1, -1, -1, 8,-1, -1, -1, -1), 1, 0))
    .point(lambda p: 255 if p > 10 else 0))
edges.show()
Run Code Online (Sandbox Code Playgroud)

边缘

r, g, b = base.split()

# now I want the blue channel/band for each pixel to be whatever respective
# pixel is brighter on a given set of bands

# this is what I want …
Run Code Online (Sandbox Code Playgroud)

python python-imaging-library

2
推荐指数
1
解决办法
729
查看次数

什么问题可以在互斥范围外调用std :: list/vector/map/deque :: empty()?

请考虑以下代码段:

线程1:

while (true) {
    task = fetch_task();
    {
        lock_guard<mutex> lock(my_mutex);

        // modify content of my_list
        my_list.push_back(task);
    }
}
Run Code Online (Sandbox Code Playgroud)

线程2:

while (true) {
    if (!my_list.empty()) {
        {
            lock_guard<mutex> lock(my_mutex);

            // modify content of my_list
            if (!my_list.empty()) {
                task = my_list.pop_front();
            }
        }
        if (taks) {
            handle_taks(task);
        }
    }
    do_some_other_stuff();
}
Run Code Online (Sandbox Code Playgroud)

我知道这个代码在很多层面很差(比如异常处理),而且在任务处理方面还有更好的方法 - 我只对一个方面感兴趣:

my_list.empty()在互斥范围之外调用(可能是为了避免锁定my_mutex性能危急情况).

闻起来很糟糕,我不打算这样做 - 但我想知道真正发生了什么.empty()返回bool- 我可以假设至少这个电话是安全的吗?

当然,在我打电话后内容可能已经改变,empty()所以我必须通过再次检查empty()互斥范围内来避免竞争条件.

所以我的问题是 - …

c++ concurrency containers multithreading mutex

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