来自Windows客户端的grunt-rsync失败

我想用Grunt和rsync从我的电脑(Windows)部署一些代码到一个服务器(Linux)。

我的Gruntfile.js

 module.exports = function(grunt) { grunt.initConfig({ rsync: { options: { args: ['--verbose', '--chmod=777'], exclude: ['*.git', 'node_modules'], recursive: true }, production: { options: { src: './bitzl.com', dest: '/home/marcus/bitzl.com', host: 'marcus@bitzl.com', syncDest: true } } } }); grunt.loadNpmTasks('grunt-rsync'); } 

请注意,我使用marcuschmod=777marcus只是为了简化testing。

运行grunt rsync失败:

 Running "rsync:production" (rsync) task rsyncing ./example.com >>> /home/marcus/bitzl.com Shell command was: rsync ./bitzl.com marcus@bitzl.com:/home/marcus/bitzl.com --rsh ssh --recursive --delete --delete-exc luded --exclude=*.git --exclude=node_modules --verbose --chmod=777 ERROR Error: rsync exited with code 12 Warning: Task "rsync:production" failed. Use --force to continue. Error: Task "rsync:production" failed. at Task.<anonymous> (D:\git\bitzl.com\node_modules\grunt\lib\util\task.js:200:15) at null._onTimeout (D:\git\bitzl.com\node_modules\grunt\lib\util\task.js:236:33) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) Aborted due to warnings. 

但是,从上面运行rsync命令没有Grunt工作正常:

 rsync ./bitzl.com marcus@bitzl.com:/home/marcus/bitzl.com --rsh ssh --recursive --delete --delete-excluded --exclude=*.git --exclude=node_modules --verbose --chmod=777 

Rsync提供我的公钥密码(通过Grunt它不),同步就像一个微风。

服务器上的validation通过公钥(使用密码)工作。 密码authentication也可以。

我的猜测是,密码promt破坏和rsync失败,协议错误( 退出代码12 )。

我错过了让grunt-rsync在Windows上工作?

更新:

从Linux虚拟机(Ubuntu 12.04通过Virtualbox / Vagrant),它的工作原理就像所期望的那样。

原来是grunt-rsync中的一个bug。 我为rsyncwrapper填充的拉取请求已被接受,并且最近版本的grunt-rsync一切正常。

如果仍然遇到问题,请确保至少安装了grunt-rsync版本0.6.0。