在我们公司,我们更喜欢在代码最终生效的实际服务器上进行开发,因此我们将FTP文件保存起来,在服务器上测试它们,然后一旦完成,我们提交并推送它们,它们部署repo并更改到发生FTP的同一服务器。
以前我们一直使用Beanstalk和FTP部署方案,因此,由于服务器上的本地更改只会被FTP覆盖,因此不会发生任何冲突。
我们最近搬到了不提供FTP解决方案的GitLab,只有通过GIT本身拉回购物的webhook。
因此,我们收到了未跟踪文件和本地文件的错误,因为我们正在FTP那些文件。
我做了很多研究,看起来答案是这样的:
https://stackoverflow.com/a/13242127/1136979
但是,我们需要将其转换为PHP以在Web挂钩中使用。
执行提取很简单,但是可以转换此部分:
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
rm -f -- "$file"
done
# Checkout all files which were locally modified
for file in `git diff --name-status | awk '/^[CDMRTUX]/ {print $2}'`
do
git checkout -- "$file"
done
到PHP?
任何人都可以分享如何将这个awk命令转换为php中的某些内容?
我假设我可以像这样访问文件:
$files = exec('git diff HEAD origin/master --name-status');
然后简单地遍历它们,但我不确定awk的作品是什么。
所有人都非常感谢。