2012-01-10 14 views
6

Estoy buscando una biblioteca escrita para Node.js que podré usar para administrar desde la aplicación web mis repositorios locales creados en Mercurial HG.Mercurial HG library para Node.js para repositorios locales

¿Alguien ha implementado algo así?

+1

Si no es en http://search.npmjs.org/ o https://github.com/joyent/node/wiki/modules probablemente no existe (públicamente) –

Respuesta

7

Nunca he oído hablar de dicha biblioteca, no se ha anunciado en our mailinglist. La API estable para Mercurial es command line, por lo que sugiero simplemente iniciar hg directamente y analizar la salida. Está diseñado para ser fácil de raspar y además puede personalizarlo usando templates.

+1

Si utiliza el servidor de comandos, puede evitar la sobrecarga de inicio de hg, sin embargo, implica un poco más de esfuerzo. –

+0

Lo pensé, pero como solución final. Gracias por las respuestas. – mrzepinski

+0

Si la respuesta le resultó útil (pensó que era negativa), recuerde votar y aceptarla. –

6

He creado un módulo disponible en npm llamado node-hg precisamente por este motivo.

Es un contenedor alrededor del Command Server que emite comandos a través de stdin y analiza el resultado en stdout.

Aquí hay un ejemplo de cómo funciona:

var path = require("path"); 

var hg = require("hg"); 

// Clone into "../example-node-hg" 
var destPath = path.resolve(path.join(process.cwd(), "..", "my-node-hg")); 

hg.clone("http://bitbucket.org/jgable/node-hg", destPath, function(err, output) { 
    if(err) { 
     throw err; 
    } 

    output.forEach(function(line) { 
     console.log(line.body); 
    }); 

    // Add some files to the repo with fs.writeFile, omitted for brevity 

    hg.add(destPath, ["someFile1.txt", "someFile2.txt"], function(err, output) { 
     if(err) { 
      throw err; 
     } 

     output.forEach(function(line) { 
      console.log(line.body); 
     }); 

     var commitOpts = { 
      "-m": "Doing the needful" 
     }; 

     // Commit our new files 
     hg.commit(destPath, commitOpts, function(err, output) { 
      if(err) { 
       throw err; 
      } 

      output.forEach(function(line) { 
       console.log(line.body); 
      }); 
     }); 
    }); 
}); 
Cuestiones relacionadas