0%

SourceTree一大坑之提交代码提示basename和node权限被拒绝

SourceTree简介

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。

Husky简介

Husky(Github地址,21.5k颗星)是GitHook工具, 使用它可以在我们提交代码的时候可以更好的规范提交信息和代码,运行测试等,Husky支持所有的Git钩子。
如需了解更多,请访问Husky官方文档

使用SourceTree遇到的一大坑

平常日常生活中使用SourceTree获取、提交代码都比较顺畅,但是今天在使用过程中遇到一个比较奇怪的问题,被坑了很久,将其解决思路分享出来希望能帮助到你。

在使用SourceTree提交代码的时候始终提示以下错误:

1
2
3
4
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks commit -q -F "C:\Users\[你的名字]\AppData\Local\Temp\p50mv0tg.ec0"
.git/hooks/pre-commit: line 15: /usr/bin/basename: Permission denied
.git/hooks/pre-commit: line 32: /c/Program Files/nodejs/node: Permission denied
Completed with errors, see above.

解决思路

  1. 由于项目使用了husky工具,第一反应是husky引入的姿势有问题,于是各种捣鼓,发现使用乌龟可以正常提交,因此排除husky问题。
  2. 怀疑获取代码路径是否正确,代码文件夹是否有权限,然后换不同的文件夹继续用sourcetree拉取代码,无论如何问题依然存在。
  3. 同样的文件夹和权限,使用乌龟拉取和提交代码均没有问题,一切正常。
  4. 然后琢磨错误提示,两个地方提示均没有权限,/usr/bin/basename: Permission denied,找到basename.exe位于C:\Program Files\Git\usr\bin下,接着授予整个Git目录everyone的全部读写权限,接着找到nodejs目录,同样授予全部读写权限,心想授予全部权限总可以了吧,然鹅并没有好,依然是同样的错误,此时此刻已经怀疑人生了。basename位置
  5. 继续分析,那么可能是git,nodejs,sourcetree的安装姿势有问题,全部卸载,重新下载最新版本安装,心想这次总该可以了吧。
  6. 事实证明我想多了,不过这次安装的时候有新的发现,sourcetree有内置的git,而且版本不是最新的,找到官方文档,可以通过工具-选项-Git选项卡-Git版本选择SystemSourceTree选择git版本
  7. 重启sourcetree提交代码,成功了!

希望能帮助到你,晚安。