在使用hexo-deployer-git
时 push 到分支内的都是 hexo 生成的 public 文件夹内容,想要同时把项目变更一起 push 这样就不需要再手动 commit 了~
原 deploy
deploy: - type: git branch: master repo: <git repo url>
|
hexo-deployer-git
分析下该插件是如何只将 public
文件夹内容 push 到分支的
hexo-deployer-git/lib/deployer.js
function setup() { const userName = args.name || args.user || args.userName || ''; const userEmail = args.email || args.userEmail || '';
return fs.writeFile(pathFn.join(deployDir, 'placeholder'), '').then(() => { return git('init'); }).then(() => { return userName && git('config', 'user.name', userName); }).then(() => { return userEmail && git('config', 'user.email', userEmail); }).then(() => { return git('add', '-A'); }).then(() => { return git('commit', '-m', 'First commit'); }); }
fs.exists(deployDir).then(exist => { if (exist) return; log.info('Setting up Git deployment...'); return setup(); })
|
该段可以看出每次提交时判断.deploy_git
文件夹是否存在,不存在会创建 .deploy_git
并同时 git init
把该文件夹当作新的提交域,
所以删除了 .git
git add -A
就能 add 全部变更文件了
fs.exists(deployDir).then(exist => { if (exist) return;
log.info('Setting up Git deployment...'); return setup(); }) .then(() => { log.info('Clearing .deploy_git folder...'); return fs.emptyDir(deployDir); }) .then(() => { if (args.all) { log.info('Clearing .deploy_git .git... -ksh'); return fs.rmdirSync(pathFn.join(deployDir, '.git')); } })
|
更改后的 deploy
deploy: - type: git branch: master repo: <git repo url> - type: git + all: true branch: bolg repo: <git repo url>
|
这是修改后的 hexo-deployer-git-ksh