Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cache/add-remote-git.js')
-rw-r--r--lib/cache/add-remote-git.js69
1 files changed, 26 insertions, 43 deletions
diff --git a/lib/cache/add-remote-git.js b/lib/cache/add-remote-git.js
index bbe38b0e5..7743aa4a4 100644
--- a/lib/cache/add-remote-git.js
+++ b/lib/cache/add-remote-git.js
@@ -1,7 +1,6 @@
var mkdir = require("mkdirp")
, assert = require("assert")
- , spawn = require("child_process").spawn
- , exec = require("child_process").execFile
+ , git = require("../utils/git.js")
, once = require("once")
, fs = require("graceful-fs")
, log = require("npmlog")
@@ -86,29 +85,22 @@ function checkGitDir (p, u, co, origUrl, silent, cb) {
cloneGitRemote(p, u, co, origUrl, silent, cb)
})
- var git = npm.config.get("git")
var args = [ "config", "--get", "remote.origin.url" ]
var env = gitEnv()
// check for git
- which(git, function (err) {
- if (err) {
- err.code = "ENOGIT"
- return cb(err)
+ git.whichAndExec(args, {cwd: p, env: env}, function (er, stdout, stderr) {
+ var stdoutTrimmed = (stdout + "\n" + stderr).trim()
+ if (er || u !== stdout.trim()) {
+ log.warn( "`git config --get remote.origin.url` returned "
+ + "wrong result ("+u+")", stdoutTrimmed )
+ return rm(p, function (er){
+ if (er) return cb(er)
+ cloneGitRemote(p, u, co, origUrl, silent, cb)
+ })
}
- exec(git, args, {cwd: p, env: env}, function (er, stdout, stderr) {
- var stdoutTrimmed = (stdout + "\n" + stderr).trim()
- if (er || u !== stdout.trim()) {
- log.warn( "`git config --get remote.origin.url` returned "
- + "wrong result ("+u+")", stdoutTrimmed )
- return rm(p, function (er){
- if (er) return cb(er)
- cloneGitRemote(p, u, co, origUrl, silent, cb)
- })
- }
- log.verbose("git remote.origin.url", stdoutTrimmed)
- archiveGitRemote(p, u, co, origUrl, cb)
- })
+ log.verbose("git remote.origin.url", stdoutTrimmed)
+ archiveGitRemote(p, u, co, origUrl, cb)
})
})
}
@@ -117,35 +109,27 @@ function cloneGitRemote (p, u, co, origUrl, silent, cb) {
mkdir(p, function (er) {
if (er) return cb(er)
- var git = npm.config.get("git")
var args = [ "clone", "--mirror", u, p ]
var env = gitEnv()
// check for git
- which(git, function (err) {
- if (err) {
- err.code = "ENOGIT"
- return cb(err)
- }
- exec(git, args, {cwd: p, env: env}, function (er, stdout, stderr) {
- stdout = (stdout + "\n" + stderr).trim()
- if (er) {
- if (silent) {
- log.verbose("git clone " + u, stdout)
- } else {
- log.error("git clone " + u, stdout)
- }
- return cb(er)
+ git.whichAndExec(args, {cwd: p, env: env}, function (er, stdout, stderr) {
+ stdout = (stdout + "\n" + stderr).trim()
+ if (er) {
+ if (silent) {
+ log.verbose("git clone " + u, stdout)
+ } else {
+ log.error("git clone " + u, stdout)
}
- log.verbose("git clone " + u, stdout)
- archiveGitRemote(p, u, co, origUrl, cb)
- })
+ return cb(er)
+ }
+ log.verbose("git clone " + u, stdout)
+ archiveGitRemote(p, u, co, origUrl, cb)
})
})
}
function archiveGitRemote (p, u, co, origUrl, cb) {
- var git = npm.config.get("git")
var archive = [ "fetch", "-a", "origin" ]
var resolve = [ "rev-list", "-n1", co ]
var env = gitEnv()
@@ -153,7 +137,7 @@ function archiveGitRemote (p, u, co, origUrl, cb) {
var resolved = null
var tmp
- exec(git, archive, {cwd: p, env: env}, function (er, stdout, stderr) {
+ git.whichAndExec(archive, {cwd: p, env: env}, function (er, stdout, stderr) {
stdout = (stdout + "\n" + stderr).trim()
if (er) {
log.error("git fetch -a origin ("+u+")", stdout)
@@ -186,7 +170,7 @@ function archiveGitRemote (p, u, co, origUrl, cb) {
}
function resolveHead () {
- exec(git, resolve, {cwd: p, env: env}, function (er, stdout, stderr) {
+ git.whichAndExec(resolve, {cwd: p, env: env}, function (er, stdout, stderr) {
stdout = (stdout + "\n" + stderr).trim()
if (er) {
log.error("Failed resolving git HEAD (" + u + ")", stderr)
@@ -215,12 +199,11 @@ function archiveGitRemote (p, u, co, origUrl, cb) {
mkdir(path.dirname(tmp), function (er) {
if (er) return cb(er)
var gzip = zlib.createGzip({ level: 9 })
- var git = npm.config.get("git")
var args = ["archive", co, "--format=tar", "--prefix=package/"]
var out = fs.createWriteStream(tmp)
var env = gitEnv()
cb = once(cb)
- var cp = spawn(git, args, { env: env, cwd: p })
+ var cp = git.spawn(args, { env: env, cwd: p })
cp.on("error", cb)
cp.stderr.on("data", function(chunk) {
log.silly(chunk.toString(), "git archive")