2014-05-09 27 views
6

Voglio usare Grunt e rsync distribuire del codice dal mio computer (Windows) a un server (Linux).grunt-rsync da client Windows non riesce

mio 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: '[email protected]', 
        syncDest: true 
       } 
      } 
     } 
    }); 

    grunt.loadNpmTasks('grunt-rsync'); 
} 

Si prega di notare che io uso il homedirectory di marcus e chmod=777 solo per semplificare il test.

Esecuzione grunt rsync fallisce:

Running "rsync:production" (rsync) task 
rsyncing ./example.com >>> /home/marcus/bitzl.com 
Shell command was: rsync ./bitzl.com [email protected]:/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. 

Tuttavia, l'esecuzione del comando rsync dall'alto senza Grunt funziona bene:

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

promts Rsync per la passphrase della mia chiave pubblica (tramite Grunt doesn' t) e si sincronizza come una brezza.

L'autenticazione sul server funziona tramite chiave pubblica (con passphrase). Anche l'autenticazione della password andrebbe bene.

La mia ipotesi è che in qualche modo la password si interrompe e rsync non riesce con un errore di protocollo (che è exit code 12).

Cosa mi manca per ottenere grunt-rsync su Windows?

Aggiornamento:

Da una macchina virtuale Linux (Ubuntu 12.04 con Virtualbox/Vagrant) funziona come su si aspetterebbe.

+0

possibile duplicato di [errore di protocollo cygwin rsync] (http://stackoverflow.com/questions/4892125/cygwin-rsync-protocol-error) –

risposta

0

Si è rivelato un errore in grunt-rsync. È stata accettata una richiesta pull che ho compilato per rsyncwrapper e, con la versione recente di grunt-rsync, tutto funziona come previsto.

Se si verificano ancora problemi, assicurarsi di avere almeno grunt-rsync versione 0.6.0 installata.

Problemi correlati