2012-01-10 28 views

cevap

7

Böyle bir kitaplığı hiç duymadım - our mailinglist numaralı telefondan duyurulmadı. Mercurial için kararlı API, command line'dur, dolayısıyla hg'u doğrudan başlatıp çıktının ayrıştırılmasını öneriyorum. Ekran kazıma işlemi kolay olacak şekilde tasarlanmıştır ve templates'u kullanarak daha da özelleştirebilirsiniz.

+1

Komut sunucusunu kullanırsanız, hg başlangıç ​​ek yükünden kaçınabilirsiniz, ancak biraz daha fazla çaba gerektirir. –

+0

Bunu düşündüm ama son bir çözüm olarak. Cevaplar için teşekkürler. – mrzepinski

+0

Eğer cevabı faydalı bulduysanız (negatif olduğunu düşündüğünüzde), lütfen kabul etmeyi ve kabul etmeyi unutmayın. –

6

Tam olarak bu nedenle node-hg adı verilen npm'de kullanılabilir bir modül oluşturdum.

stdin aracılığıyla komutları veren ve stdout üzerindeki çıktıları ayrıştıran Command Server'un etrafındaki sarıcıdır. o http://search.npmjs.org/ üzerinde değil ya https://github.com/joyent/node/wiki/modules bunu muhtemelen Eğer

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); 
      }); 
     }); 
    }); 
});