2016-11-27 9 views
1

私はノードjsで新しく、gitでも同様にテキストファイルの結果を書き込むアプリケーションを構築していて、gitをすばやく実行します。 多くの苦労の末、私はファイルを書き、githubを押している次のコードを見つけました。しかし、私は各ファイルの代わりにディレクトリ全体を名前でプッシュする方法を模索しています。ですから、ディレクトリ全体をプッシュする方法を教えてください。ディレクトリ内のディレクトリまたはすべてのファイルをnodegitで追加する方法は?

私の現在のコードは、あなたが求めているものを行うためにindex.addAllを使用することができるはずです...以下のよう

var nodegit = require("nodegit"); 
var path = require("path"); 
var promisify = require("promisify-node"); 
var fse = promisify(require("fs-extra")); 
var fileName = "urls.txt"; 
var fileContent = "hello world"; 
var directoryName = "./"; 
fse.ensureDir = promisify(fse.ensureDir); 
var repo; 
var index; 
var oid; 
var remote; 

nodegit.Repository.open('data') 
.then(function(repoResult) { 
    repo = repoResult; 
    return fse.ensureDir(path.join(repo.workdir(), directoryName)); 
}).then(function(){ 
    return fse.writeFile(path.join(repo.workdir(), fileName), fileContent); 
}) 
.then(function() { 
    return fse.writeFile(
    path.join(repo.workdir(), directoryName, fileName), 
    fileContent 
); 
}) 
.then(function() { 
    return repo.refreshIndex(); 
}) 
.then(function(indexResult) { 
    index = indexResult; 
}) 
.then(function() { 
    // this file is in the root of the directory and doesn't need a full path 
    return index.addByPath(fileName); 
}) 
.then(function() { 
    // this file is in a subdirectory and can use a relative path 
    return index.addByPath(path.join(directoryName, fileName)); 
}) 
.then(function() { 
    // this will write both files to the index 
    return index.write(); 
}) 
.then(function() { 
    return index.writeTree(); 
}) 
.then(function(oidResult) { 
    oid = oidResult; 
    return nodegit.Reference.nameToId(repo, "HEAD"); 
}) 
.then(function(head) { 
    return repo.getCommit(head); 
}) 
.then(function(parent) { 
    var author = nodegit.Signature.create("Scott Chacon", 
    "[email protected]", 123456789, 60); 
    var committer = nodegit.Signature.create("Scott A Chacon", 
    "[email protected]", 987654321, 90); 

    return repo.createCommit("HEAD", author, committer, "message", oid, [parent]); 
}) 
.then(function() { 
    return repo.getRemote("origin") 
    .then(function(remoteResult) { 
    remote = remoteResult; 

    // Create the push object for this remote 
    return remote.push(
     ["refs/heads/master:refs/heads/master"], 
     { 
     callbacks: { 
      credentials: function(url, userName) { 

      return nodegit.Cred.userpassPlaintextNew('username', 'password'); 
      } 
     } 
     } 
    ); 
    }); 
}) 
.done(function(res) { 
    console.log("Done"); 
}); 

答えて