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

Mar*_*tzl 6 windows rsync gruntjs

我想使用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');
}
Run Code Online (Sandbox Code Playgroud)

请注意,我用的home目录marcuschmod=777只是为了简化测试.

运行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.
Run Code Online (Sandbox Code Playgroud)

但是,在没有Grunt的情况下从上面运行rsync命令可以正常工作:

rsync ./bitzl.com marcus@bitzl.com:/home/marcus/bitzl.com --rsh ssh --recursive --delete --delete-excluded --exclude=*.git --exclude=node_modules --verbose --chmod=777
Run Code Online (Sandbox Code Playgroud)

Rsync承诺我的公钥密码(通过Grunt它没有)和同步就像一个微风.

服务器上的身份验证通过公钥(带密码)进行.密码验证也没问题.

我的猜测是,密码promt以某种方式中断,rsync因协议错误而失败(即退出代码12).

我缺少什么让grunt-rsync在Windows上工作?

更新:

从Linux VM(Ubuntu 12.04到Virtualbox/Vagrant),它可以像预期的那样工作.

Mar*_*tzl 0

事实证明这是 grunt-rsync 中的一个错误。我为 rsyncwrapper 填写的拉取请求已被接受,并且使用最新版本的 grunt-rsync 一切都按预期工作。

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