繁体   English   中英

nodegit(用于Node.js的libgit2):如何推拉?

[英]nodegit (libgit2 for Node.js): How to push and pull?

我试图推送或拉动nodegit

包很受欢迎,一切正常,但我似乎无法找到这些基本方法。 我错过了什么?

还有其他套餐吗?

试试这个以获取和拉取:

/**
 * Fetch from remote
 * fileName: pull.js
 *
 * @param {string} repositoryPath - Path to local git repository
 * @param {string} remoteName - Remote name
 * @param {string} branch - Branch to fetch
 */

var Git = require('nodegit');
var open = Git.Repository.open;   

module.exports = function (repositoryPath, remoteName, branch, cb) {
    var repository;
    var remoteBranch = remoteName + '/' + branch;
    open(repositoryPath)
        .then(function (_repository) {
            repository = _repository;
            return repository.fetch(remoteName);
        }, cb)
        .then(function () {
            return repository.mergeBranches(branch, remoteBranch);
        }, cb)
        .then(function (oid) {
            cb(null, oid);
        }, cb);
};

然后你可以这样使用:

var pull = require('./pull.js');
var remoteRef = 'origin';

pull(repositoryPath, remoteRef, ourBranch, function(errFetch, oid) {
    if (errFetch) {
        return errFetch;
    }
    console.log(oid);
});

并试着推送:

/**
 * Pushes to a remote
 *
 * @param {string} repositoryPath - Path to local git repository
 * @param {string} remoteName - Remote name
 * @param {string} branch - Branch to push
 * @param {doneCallback} cb
 */

var Git = require('nodegit');
var open = Git.Repository.open;

module.exports = function (repositoryPath, remoteName, branch, cb) {

    var repository, remoteResult;

    open(repositoryPath)
        .then(function (_repository) {
            repository = _repository;
            return repository.getRemote(remoteName);
        }, cb)
        .then(function (_remoteResult) {
            remoteResult = _remoteResult;
            return repository.getBranch(branch);
        }, cb)
        .then(function (ref) {
            return remoteResult.push([ref.toString()], new Git.PushOptions());
        }, cb)
        .then(function (number) {
            cb(null, number);
        }, cb);
};

github网站上提供的示例。

对于fetchhttps//github.com/nodegit/nodegit/blob/master/examples/fetch.js

pullhttps//github.com/nodegit/nodegit/issues/341

repo.fetchAll({
  credentials: function(url, userName) {
    return NodeGit.Cred.sshKeyFromAgent(userName);
  }
}).then(function() {
  repo.mergeBranches("master", "origin/master");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM