diff options
Diffstat (limited to 'lib/utils/git.js')
-rw-r--r-- | lib/utils/git.js | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/utils/git.js b/lib/utils/git.js index f7f63e7..9a669db 100644 --- a/lib/utils/git.js +++ b/lib/utils/git.js @@ -4,8 +4,8 @@ var url = require("url"); var tmp = require("tmp"); var path = require("path"); var crc = require("crc"); -var ngu = require('normalize-git-url'); var exec = Q.denodeify(require("child_process").exec); +var URI = require("URIjs"); var fs = require("./fs"); @@ -25,31 +25,25 @@ function validateSha(str) { // Parse and extract infos function parseGitUrl(giturl) { - var ref, parts; + var ref, uri, fileParts, filepath; if (!checkGitUrl(giturl)) return null; giturl = giturl.slice(GIT_PREFIX.length); - if (!url.parse(giturl).protocol) { - giturl = "ssh://"+giturl; - } - - var normalized = ngu(giturl); - - parts = url.parse(normalized.url); - ref = normalized.branch; + uri = new URI(giturl); + ref = uri.fragment() || "master"; + uri.fragment(null); // Extract file inside the repo (after the .git) - var fileParts = parts.pathname.split(".git"); - var filepath = fileParts.length > 1? fileParts.slice(1).join(".git") : ""; + fileParts =uri.path().split(".git"); + filepath = fileParts.length > 1? fileParts.slice(1).join(".git") : ""; if (filepath[0] == "/") filepath = filepath.slice(1); - // Rebuild - parts.pathname = _.first(fileParts)+".git"; - var githost = url.format(parts); + // Recreate pathname without the real filename + uri.path(_.first(fileParts)+".git"); return { - host: githost, + host: uri.toString(), ref: ref || "master", filepath: filepath }; |