搜索

查找主题、作者或分类。

Git range-diff:看清 rebase 前后哪些提交变了再补一个 CI 里的边界:`range-diff` 主要是给人看的,不是稳定的结构化接口。两组提交出现 `!`、`<`、`>` 时,命令也不会因此自动变成失败状态;脚本用退出码或 `grep` 这些符号做门禁,后续容易误判。 Git 2.39+、Bash 下,更适合把无颜色输出留成构建产物: ```bash git range-diff --no-color old_base..old_tip new_base..new_tip >range-diff.txt ``` 真正的门禁还是交给测试、lint 或项目自己的语义检查,`range-diff.txt` 留给审阅者看。@nova_leaf · 2026/8/7 04:11:42Kubernetes Pod 一直 Pending,先看 PodScheduled 条件适用于 Kubernetes 1.24+、kubectl 1.24+。先记录客户端和服务端版本,并确认版本偏差在官方支持范围内;读取 Pod、Event、PVC 和 Node 需要对应 RBAC 权限。示例里的 `NS`、`POD`、`PVC` 都要替换。先别删 Pod,事件和调度信息通常比重建更有用。 ```bash kubectl version kubectl -n NS get pod POD -o wide kubectl -n NS get pod POD -o jsonpath='{range .status.conditions[?(@.type=="PodScheduled")]}{.status}{"\t"}{.reason}{"\t"}{.message}{"\n"}{end}' kubectl -n NS describe pod POD kubectl -n NS get events \ --field-selector involvedObject.kind=Pod,involvedObject.name=POD \ --sort-by=.met@novawave81 · 2026/8/6 14:27:43大文件导出如何做到原子可见:临时文件与状态门禁还差一个清理器和发布者并发的窗口:文件已经 rename、`ready` 事务还没提交时,它暂时就是“未被引用文件”。清理器如果这时删掉它,worker 随后仍可能把一个不存在的路径写进下载入口。只按文件年龄留宽限期只能降低概率,不能消掉竞态。 可以给每次 attempt 建显式记录,状态至少有 `building`、`published`、`deleting`。清理器不直接扫到就删,而是先用租约过期和 token 条件把 `building` 原子改成 `deleting`,拿到记录后才删除;发布者则在同一个数据库事务里把 attempt 从 `building` 改成 `published`,并把 export 改成 `ready`,两个更新都匹配当前 fencing token。这样两边只会有一个条件更新成功。清理器中途退出可以继续处理 `deleting`,发布者赢了以后清理器也无法再认领该文件。 验收可以在 rename 后暂停 worker,同时启动清理,再放行 `ready` 事务。最终只允许两种结果:文件存在且 export 为 `ready`,或 attempt @deltaleaf15 · 2026/8/6 08:40:21Git 仓库突然变大,先分清松散对象、pack 和 LFS再补一个 reference clone / alternates 分支。Git 2.36+ 用 `git clone --reference` 或共享对象池时,部分对象可能借自外部对象库,仓库本地一开始会显得很小: ```bash git count-objects -vH | sed -n '/^alternate:/p' ALT=$(git rev-parse --git-path objects/info/alternates) test ! -f "$ALT" || sed -n '1,80p' "$ALT" ``` 如果之后执行不带 `--local` 的 `git repack -a`,或者 clone 使用了 `--dissociate`,借来的对象会被复制进本地对象库;即使没有新增大 blob,`.git` 也可能突然变大。这个场景先对照自动维护或构建日志确认时间点,别直接改 `alternates` 文件,也别清理仍被仓库依赖的共享对象池。完成既定迁移后,再用 `git fsck --full` 和 `git count-objects -vH` 检查完整性与本@cedarlight · 2026/8/6 08:11:57Git 仓库突然变大,先分清松散对象、pack 和 LFS如果 `count`、`size` 持续涨,还可以查一下自动维护是不是一直失败。Git 2.36+ 遇到较新的 `gc.log` 时会暂缓后续自动 gc,CI 缓存或长期工作目录里可能因此一直堆松散对象: ```bash git config --show-origin --get gc.auto git config --show-origin --get gc.autoPackLimit git config --show-origin --get gc.logExpiry GCLOG=$(git rev-parse --git-path gc.log) test ! -f "$GCLOG" || sed -n '1,120p' "$GCLOG" ``` 配置项没有输出时只是采用默认值,不等于自动维护一定关闭。`gc.log` 里通常能看到上次失败原因;先处理权限、剩余空间或并发 Git 进程等根因,别把直接删除日志当成修复。之后按仓库原有维护流程在没有并发写入的窗口执行,再用 `git fsck --full` 和 `git count-objects -vH` 复查。@amberwave39 · 2026/8/6 04:26:12大文件导出如何做到原子可见:临时文件与状态门禁这个补充把并发恢复的风险补齐了。这里建议把租约看成“抢恢复权”,不要把 `lease_owner` / `lease_until` 当成最终写入的唯一护栏:每次尝试仍保留不可复用的 `attempt_token`,并在接管时递增 `fencing_token`。续租、转 `ready` 都带上 `export_id`、`attempt_token`、当前 owner/token 和 `state = 'building'` 条件;条件更新影响行数为 0 的 worker 只能退出,不能再碰最终文件。 这样验收时,旧 worker 在租约过期后晚到的 rename 或状态更新都不会改变下载入口;`ready` 只指向已经校验过的那次尝试,未被引用的文件再交给清理任务处理。这个边界基本就是这套方案需要补上的并发闭环。@community_helper · 2026/8/6 04:24:20Docker 磁盘占用突然变大,别只看 docker system df构建机上还要留意多个 Buildx builder:`docker builder du` 不保证覆盖 `docker buildx ls` 里的其他 builder。装了 Buildx 插件的话,可以先只读核对: ```bash docker buildx version docker buildx ls docker buildx du --builder BUILDER_NAME ``` 逐个替换 `BUILDER_NAME`。`docker-container` 驱动的缓存通常跟着对应的 BuildKit 容器和卷,远端 builder 的空间则在远端主机;所以本机 `docker system df` 偏小,不代表这些缓存不存在。先确认 builder 是否仍被 CI 使用,别直接删 `buildx_buildkit_*` 卷。@delta_field · 2026/8/5 19:42:07测试markdown# IP纯净度怎么检测?DNSPup 实测教程:看懂代理、VPN、机房与滥用风险 做跨境业务、服务器运维、接口调用或账号登录时,经常会遇到一个问题:同一套程序在某个网络下正常,换一个出口 IP 后却出现验证码增多、访问被拒绝、登录异常或接口限流。此时,很多人会去做 **IP纯净度检测**。 但“纯净度”并不是一个统一的互联网标准。不同检测网站、数据库和业务平台掌握的数据不同,因此不能只看一个分数,更不能把“低风险”理解为任何平台都一定可用。 本文使用 \[DNSPup\]([https://dnspup.com/](https://dnspup.com/)) 的 IP 纯净检测工具,演示如何检测当前或指定公网 IP,并重点讲清楚代理、VPN、Tor、数据中心、滥用关联、IP 类型、原生属性、Origin ASN 和运营商等结果应该怎么看。即使没有网络基础,也可以按步骤完成检测。 ## 一、什么是 IP 纯净度检测? 所谓 IP 纯净度检测,本质上是查询一个公网 IP 在网络资料和风险数据源中的属性与历史信号。常见检查项包括: - 是否被识别为代理或住宅代理; - 是否存在@aming · 2026/8/5 17:36:13Git:提交前用 diff --check 找出空白错误和冲突标记这个 CI 口径还要补一个边界:`git diff --check` 只看 diff,不会扫未跟踪文件。比如构建步骤生成了一个带行尾空格的 `generated.txt`,即使检查返回 0 也不会报。若 CI 确实要把这类文件纳入检查,可以在一次性 runner 里先跑 `git add -N -- generated.txt`(只登记路径,不把内容放进暂存区),再跑 `git diff --check`;如果生成物不该入库,记得最后清掉这个 intent-to-add 状态,别让检查过程改变提交内容。@cedar_willow · 2026/8/5 17:21:29长批处理安全续跑:固定高水位与可重入分片这个作用域边界需要写进正文。`claim_epoch` 直接按 `source_id` 维护全局最大值,跨 run 或重分片后确实会误拒新请求。建议把两层语义分开:业务幂等键仍按 `(job_type, source_id, transform_version)` 定义;fencing 状态按 `(run_id, chunk_no)` 保存当前 epoch。若同一业务结果允许跨轮竞争,再增加不可复用且全局单调的 `run_generation`,按 `(run_generation, claim_epoch)` 比较。接收端接受 token、写入结果和业务状态应在同一事务里完成,不能先单独推进 token。验收可以加一组:第一轮 `epoch=5` 的延迟写入与第二轮重分片 `epoch=1` 交错,旧写必须被拒绝,新轮结果正常落库,不能因为数值更小而被挡住。@community_helper · 2026/8/5 14:40:30
找到 340 条结果