折腾到凌晨五点,依然没有实现 windows下 分支 push之后服务器自动部署
主要是因为GIT的helper的配置上的问题。最后果断放弃了,最后祭出大招,用
WINDONS命令行自动循环。。60秒自动pull一次 实现的自动部署。。
不过在WINDONWS下实现有点麻烦,主要是因为credentials-manager的原因,WINDOWS下才有这个鬼玩意儿。
使用PHP 执行 exec("git pull")
的时候 会发现进程中多了一个credentials-manager的进程,这个时候PHP的页面是卡死状态,其实这个时候是GIT让credentials-manager交出登陆到远程仓库的账号密码
不过我本地试了很多次,依然是卡死状态。也无法设定他的账号和密码。。
虽然最终放弃了这个办法,但还是把我的理解做个纪念,方便以后大家解决这个问题
首先这个问题是因为git helper 引起的
那么git helper到底是什么鬼
简单讲 就是当我们执行push pull 的时候 git会要求我们输入账号密码
密码账号都正确后 ,git helper 会记录下来,下次再push pull的时候 git 会调出helper里面存储的账号和密码
但!git helper 是可以第三方实现的。。在windows下git 默认的helper是credentials-manager,这东西是微软实现的
其实你可以改成credentials-store..
但一直没改成功。。也没法删除credentials-manager 所以这就鬼扯了,php一旦执行exec("git pull") credentials-manager 就是不交出账号和密码,一直卡死。。
最后放出 我用的批处理
以下代码 保存为cmd文件 放在项目的根目录,运行即可。每分钟执行一次git pull
@echo off :s choice /t 60 /d y /n git pull goto s
各种大兄弟一脸蒙蔽。。
https://segmentfault.com/a/1190000009232433
https://www.cnblogs.com/volnet/p/git-credentials.html
http://www.cnblogs.com/ballwql/p/3462104.html
关于指定GIT 使用helper
https://blog.csdn.net/u012163684/article/details/52433645
关于GIT的设定这里有介绍
https://git-scm.com/docs/git-credential-store