1

清除 zsh steeef 主题的未追踪标记

 2 years ago
source link: https://blog.yxwang.me/2013/01/cleaning-zsh-vcs-status/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

清除 zsh steeef 主题的未追踪标记

Thu, Jan 24, 2013 • Tooling

我用的 zsh 提示符是 oh-my-zsh 自带的 steeef。最近发现用这个主题时,有些 Rails 项目即使把所有改动都提交后,还是会有红色标记表示存在未追踪文件:

使用 git statusgit diff,都看不到任何未提交的改动。一开始我以为是 zsh 或者 git 的 bug,把它们的版本都更新到最新版后还是有这个问题。于是看 steeef 主题的源码,发现了红色标记的判断依据:

# check for untracked files or updated submodules, since vcs_info doesn't
if git ls-files --other --exclude-standard --directory 2> /dev/null | grep -q "."; then
    PR_GIT_UPDATE=1
    FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST})"
else
    FMT_BRANCH="(%{$turquoise%}%b%u%c${PR_RST})"
fi

因为 vcs_info 没有提供未追踪文件或模块的方法,作者在这里用了 git ls-files --other --exclude-standard --directory 检测当前项目是否包含未追踪的文件,而在我的项目根目录下运行这个命令后,可以看到有三个目录未被追踪:

$ git ls-files --others --exclude-standard --directory
log/
public/system/
tmp/

这几个目录在 .gitignore 中都有声明,当时项目刚创建时借用了 gitignore 中的模版,相关的声明是:

/log/*
/tmp/*
/public/system/*

看来问题就出在这里用了通配符 *,把目录下的所有文件而不是目录本身忽略了。因为 git 不允许把空目录加到项目中,git statusgit ignore 都不会显示这些目录,而作者检测时用的 git ls-files --directory 又会包含未追踪的空目录,就出现了这个提示有改动却找不到的情况。知道问题后解决方案很简单,把 .gitignore 文件中的 xxx/* 都改成 xxx/,或者把 --directory 参数去掉就好了。

本作品采用知识共享署名-非商业性使用 3.0 版本许可协议进行许可,欢迎转载,演绎,但是必须保留本文的署名 zellux(包含链接),且不得用于商业目的。

Recommend

  • 127

    全球工单系统 - @IiwangIin12 - 之前因为某些原因,各种支付方式都绑定的是其他家里人的身份信息。现在开始逐步换绑,支付宝和微信都挺顺利的(确认支付密码之后注销即可),结果 MiPay 这边就不行了。 MiPay 的实名信息要

  • 31

  • 53
    • www.williamlong.info 6 years ago
    • Cache

    Twitter清除锁定帐号导致用户掉粉

  • 38

    来源:奇点网说起天坑,各个领域都有各自的天坑,像什么永远还差50年的可控核聚变。在医学中,最大的天坑恐怕要属以阿尔茨海默病(AD)为代表的神经退行性疾病了,就连国际药企巨头辉瑞公司,都在今年初宣布放弃了全部神经退行性疾病的药物研究。也难怪药

  • 46

    来源:DeepTech深科技今日,根据《华尔街日报》、《纽约时报》、《卫报》、Science 等多家媒体报道,有研究人员表示,一名伦敦男子在接受干细胞移植后其艾滋病可能已被治愈。也就是说,既“柏林病人”之后,第二位成功治愈艾滋病的

  • 31
    • www.freebuf.com 5 years ago
    • Cache

    Linux挖矿病毒的清除与分析

    *本文原创作者:xuing,本文属于FreeBuf原创奖励计划,未经许可禁止转载 起因 舍友在宿舍喊着,这服务器好卡啊,难受啊!我调侃他是不是被挖矿了,top命令看一下CPU占用。 一看吓一跳,一个叫做sys...

  • 28

    新浪科技讯北京时间5月14日凌晨消息,苹果今天推送了iOS12.3正式版,随着苹果和高通专利官司的和解,苹果原先的上滑清除程序动画在iOS12.3中重新回归,本次更新大小506.2M,苹果除了继续提高系统稳定性外,还重点改善了一些系统Bug

  • 4
    • netsecurity.51cto.com 2 years ago
    • Cache

    基于追踪标记的WAF设计思路

    基于追踪标记的WAF设计思路-51CTO.COM 基于追踪标记的WAF设计思路 作者:XHJ2020 2022-07-29 09:35:25 本文所述WAF从“潜在攻击识别、溯源取证分析"等方面弥补了传统WAF的不足,即保...

  • 2
    • benpaodewoniu.github.io 1 year ago
    • Cache

    python | 标记清除

    python 标记清除。 循环引用 & 交叉感染v1 = [11,22,33] # refchain 中创建一个列表对象,引用计数器 1v2 = [44,55,66] # refchain 中创建一个列表对象,引用计数器 1v1.appen...

  • 0
    • www.jdon.com 8 months ago
    • Cache

    Java中标记清除垃圾收集算法

    Java中标记清除垃圾收集算法 垃圾收集算法(例如标记和清除)在后台运行,以管理 C++ 和 Java...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK