diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-01-26 10:12:26 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-01-26 10:12:26 +0100 |
commit | 93bc86a0fe65943ac2ce0af28a8d81d438d17dbe (patch) | |
tree | c46871b95585f0fca2ce354c00baf19403fd464d /lib/utils/git.js | |
parent | 75b217fc246be108368ed0e3c3adda3dc85fd615 (diff) | |
download | gitbook-93bc86a0fe65943ac2ce0af28a8d81d438d17dbe.zip gitbook-93bc86a0fe65943ac2ce0af28a8d81d438d17dbe.tar.gz gitbook-93bc86a0fe65943ac2ce0af28a8d81d438d17dbe.tar.bz2 |
Fix git url parsing for content references
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 }; |