git报错——fatal: detected dubious ownership in repository at

在虚拟机ubuntu共享文件夹里创建git库,用tortoisegit查看会报如下错误:

上网搜索到https://medium.com/@thecodinganalyst/git-detect-dubious-ownership-in-repository-e7f33037a8f,里面说git v2.35.2版本之后git会检查当前用户是否是git仓库文件夹的所有者,如果不是的话,就会提示上面这个错误。

网上说的解决方法,是更改文件夹的所有者为当前用户。但是对于ubuntu的共享文件夹,我尝试这个解决方法不可行。另外对于共享文件夹,每个都要修改所有者,这样也太麻烦了。既然新版增加了这个限制,那我只有降级到旧版本使用。降级之后,git操作一切正常。

这里不得不吐槽一下,git增加这个功能之后,虽说提高了安全性,但是却大大减小了易用性。很多软件也是这样,越升级功能越臃肿,这使得我对新版本软件越来越没有更新的兴致。

NAS开不了机

早上母亲说电视机昨天看不了动画片了,我一检查才发现是NAS关机了。尝试按了电源开关,没有反应,估计应该是电源或者主板坏了。

2020年疫情刚开始的时候,入手了这台蜗牛星际,前前后后折腾了一两个月,后面就稳定安装黑群使用。期间逐步更换硬盘,从最开始的闲置1T硬盘,换到现在3个4T的紫盘,硬盘的投入已经远超机器本身。

这两年习惯了NAS使用之后,已经离不开NAS了。首要便是moments备份的功能,其实安装黑群,主要就是看中了这个软件。有了moments备份之后,就不再担心手机坏了或者手机丢失导致照片丢的问题。并且用moments管理照片,还可以很方便的在里面浏览以前的照片。

之后用了synology driver,多台电脑之间实现文件同步,非常方便。工作台式机和笔记本之间的工作目录随时保持一致,不再需要U盘在两台电脑之间来回拷贝。synology driver的版本管理也非常好用,有时一些误操作导致文件意外删除,可以在版本库里恢复删除的文件。synology driver还可以管理要查阅的资料,资料放在里面后,可以很方便的在手机和平板上查看。

这台NAS还有用到smb共享、synology music和synology video。另外,我申请了公网IP,设置DDNS之后,可以在任何地方访问NAS。

现在NAS突然坏了,有点不习惯,要找时间尽快把它弄好。

补充:确实时电源坏了,换了一个电源,NAS恢复正常了。原装的电源,从20年开机使用到现在,连续工作了两年半,我觉得还算可以了。

三十六

三十六岁的生日,是在居家隔离中度过。

由于前几天和新冠确诊者在医院有过时空交集,昨晚社区工作人员通知我要我居家隔离四天。看通知上面的日期,昨天已经是第一天隔离了,不过因为通知太晚,白天去公司上了班。今天上午,工作人员过来贴封条、发告知书、上门做核酸。今天白天一天没有出门。而这两天周末,深圳六个区全部闭环管理,公交地铁停运,只有光明区维持正常上班。聪明的网友马上发出了“六大派围攻光明顶”的图片。

八月底,从工作了十多年的公司离职了,刚到新公司上班了两天。离职这个事情有多个因素综合在一起,这里不想过多提及,不过最主要原因还是想趁着现在这个还能有够有机会换工作的年纪,更换一下工作环境,尝试一下看自己还能不能够有进一步的发展。因为不换工作的话,还是待在之前的那个环境,对自己的未来感觉已经一望到头了——看得到个人发展的终点,看不到个人发展的希望。

四月份,老家的隔壁两户邻居要建新房。我和父母商议之后,也同意趁着这个机会把那间和邻居相连的房子,一起重建。五月份开始动工,到现在,一楼的墙面已经砌好,这几天正要浇筑二楼的地板。

人生中几个重要的事情都赶在了这一年发生,还是让我有点感慨,有些事情的发生真是有点奇妙!

消失的热情

我手上有一台DC6的搬瓦工,现在是把它套在CDN上使用,我还有一台普通的KVM搬瓦工,也是套在CDN上使用。套上CDN之后,两台VPS的理论速度应该是一样的,但是对于DC6来说,实在有点浪费它的速度。

至于为什么套CDN,是由于搭梯子IP被封了几次,每次被封的时候要重新进去把直连改为CDN,太麻烦了。现在的话,虽然速度慢一点,但好在比较稳定,随时都可以正常使用,而不用操心什么时候连不上,又要登上去修改一下设置。

关于IP被封,起初我一直以为是防火墙监测到IP流量异常而进行的封锁,后面上网才了解到是由于v2ray的一个漏洞导致tls+ws的流量可以被精准识别。我是19年建的服务端,那个时候的版本是存在这个漏洞的。要解决这个问题,就是更新版本,客户端的版本也要更新。可我的这个梯子有共享给几个人使用,要大家都更新客户端太麻烦了。况且安卓端的客户端我用的最方便的是BifrostV,这个软件也已经停更在19年,所以更新版本这个方案我放弃了。那没有办法,只能继续套用CDN使用了。

前几个月,我详细了解了一下V2Ray、Trojan、XRay这三个方案,尤其对Trojan go比较感兴趣,打算把DC6的服务器,改为Trojan go的直连。可是,这个想法一直停留在想这个阶段,虽然实施起来应该不复杂,可能最多花个一天的时间就可以搞好,可能还不要一天,说不定一个上午就可以搞好。但是我就是一直没有做的动力。

我觉得现在这样将就着用着也还好,又不是不能用,说不定Trojan go直连后,还是会被封,还是要改为CDN,与其那样还不如继续保持现在这样就好,省得折腾。

随着时间的推移,我发觉我那股子折腾的热情已经越来越淡了。

杂感

人的一生,重要的是过程,而不是一味的最求财富。

关于奋斗,一个人为了工作,把所有的时间都扑在工作上面,而忽略了家庭,这样可取吗?小孩的成长过程不可逆,错过某一阶段的陪伴,后面是再也不可能找补回来。

从生命维度来看,每个人都是平等的,不管是什么人,生命都只有几十载岁月。我们最求财富,追求地位,到生命的尽头,这些都与我无关。伟大如领袖,功过是非也都有出现在他身上,即使他的生平是多么显赫,但是对于我们后人来说,都是于己无关的事情。

我们要关注的是自身。如果你喜欢财富,可以尽情最求,如果你喜欢权力,也可以尽情最求。财富和权力是无止境的,这个度如何拿捏才最重要。

挣扎在生活边缘的人,满足生活所需是第一要务。如果生活的更好一点了,过好当下才是最重要的。

一味的和别人攀比,会让人过的很累。有时候是不是只要自己和自己纵向对比,现在比过去更好一点,是不是应该得到满足。

我们想要住更大的房子,到底多大的房子才算大。我们一定要让自己奔跑在奔波不息的奋斗之路上吗?

git文件夹权限及自动换行配置

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    autocrlf = false
    safecrlf = false
[remote “origin”]
    url = git@gitlab.synaptics.com:cordless/CMBS_Lite.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch “master”]
    remote = origin
    merge = refs/heads/master
    [branch “_CL_2.01”]
    remote = origin
    merge = refs/heads/B_CL_2.01

忽略文件夹权限
filemode = false

不进行自动换行处理
autocrlf = false
safecrlf = false

命令行操作
查看filemode选项
    git config –get core.filemode

    git config core.filemode
设置filemode选项
    git config core.filemode true

继续阅读

STM32 SAI问题

STM32F446 SAI blockA和blockB配置为从模式,如果MCU先启动SAI,再打开音频芯片SAI时钟信号,此时MCU不能进入DMA中断,采集不到数据。用Jlink复位一下MCU,SAI接口的数据采集和发送才正常。不知道这个问题是什么原因。

解决方法有2种:1.MCU启动先不使能SAI,把音频芯片SAI时钟打开后再启动MCU SAI;2.把MCU的SAI配置为主模式。

但是对于这个问题还是感到很奇怪。

关于数组清零

不要使用赋值方法清零。对于16位数组,或者32位数组,赋值清零并没有把所有位都置零。

int32_t mix_data_new[SAI_SLOTS_SIZE][2] = {0};
#if 0
for (j = 0; j < 2; j++)
{
for (k = 0; k < SAI_SLOTS_SIZE; k++)
{
mix_data_new[j][k] = 0;
}
}
#endif

使用memset清零,可以确保每个数组中的每一位都被清零。
memset(mix_data_new, 0, sizeof(mix_data_new));

奇怪的问题

第1段:
int16_t data;
const char pcm_data2[] = {…};

data = pcm_data2[i];
data += pcm_data2[i+1]<<8;

第2段:
data = ((int16_t)pcm_data2[i+1] << 8 + pcm_data2[i]);

很奇怪,上面2段代码,在STM32F401上用MDK编译出来执行的结果不一样。第1段执行出来的结果是正确的,第2段执行出来的结果是错误的,并且不知道是怎么算出来的。