[ ! %an = "my own user name" ]
всегда верно, потому что %an
никогда не будет равно вашему имени пользователя или любому другому имени пользователя в этом отношении :единственное, чему оно равно, это %an
, потому что это просто буквальная строка, насколько Баш обеспокоен. Он имеет только особое значение ("имя автора")в git .
Возможно, есть умный способ сделать то, что вы хотите, но я не могу придумать ни одного банкомата. И я не думаю, что вы можете сделать это, смешав bash и git, как вы пытаетесь сделать. Если есть такое решение, оно, скорее всего, будет крайне неуклюжим :вам в основном придется прыгать между уровнем bash и уровнем git, при этом git перебирает все коммиты, но каким-то образом сообщает bash имя автора на каждый коммит, чтобы уровень bash мог указать git, какой цвет использовать.
Если это можно сделать, я думаю, что это, вероятно, будет чистое решение git, а не смесь bash и git.
Я понял.
См. эту запись в блоге о том, как создать программу eBPF, которая будет переопределять тайм-аут.
Короче нужно загрузить эту sockops
программу:
#include<linux/bpf.h>
#define SEC(NAME) __attribute__((section(NAME), used))
// TODO: assumes little-endian (x86, amd64)
#define bpf_ntohl(x) __builtin_bswap32(x)
SEC("sockops")
int bpf_sockmap(struct bpf_sock_ops *skops)
{
const int op = (int) skops->op;
if (op == BPF_SOCK_OPS_TIMEOUT_INIT) {
// TODO: this is in jiffies, and despite `getconf CLK_TCK` return 100, HZ is clearly 25 on my kernel.
// 5000 / 250 = 20 seconds
skops->reply = 5000;
return 1;
}
return 0;
}
char _license[] __attribute((section("license"),used)) = "GPL";
int _version SEC("version") = 1;
Вы можете скомпилировать и загрузить его с помощью:
clang $CFLAGS -target bpf -Wall -g -O2 -c set_rto.c -o set_rto.o
sudo bpftool prog load set_rto.o /sys/fs/bpf/bpf_sockop
sudo bpftool cgroup attach /sys/fs/cgroup/unified/ sock_ops pinned /sys/fs/bpf/set_rto