Skip to content

Commit

Permalink
Merge pull request #23 from keithws/fix-svn-metadata
Browse files Browse the repository at this point in the history
fixed bugs in svn.parse function
  • Loading branch information
Unitech committed Apr 12, 2020
2 parents 551bd45 + d3ac17c commit dd981d8
Showing 1 changed file with 35 additions and 5 deletions.
40 changes: 35 additions & 5 deletions lib/svn/svn.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,56 @@ svn.parse = function(folder, cb) {
data.url = stdout.match(/Repository Root: ([^\n]+)/);
if (data.url && typeof(data.url) === 'object') {
data.url = data.url[1];
data.branch = typeof(data.url) === 'string' ? data.url.match(/[^/]+$/) : null;
}
if (data.branch) data.branch = data.branch[0];
var match = stdout.match(/Relative URL: \^\/([^\n]+)/);
if (match) {
var relativeUrl = match[1];
if (relativeUrl.match(/^trunk/)) {
data.branch = 'trunk';
} else if (relativeUrl.match(/^branch/)) {
match = relativeUrl.match(/^branch(?:es)?\/([^/]+)(?:\/|$)/);
if (match) {
data.branch = match[1];
}
}
}
match = stdout.match(/Last Changed Rev: ([^\n]+)/);
if (match) {
data.revision = match[1];
}
match = stdout.match(/Last Changed Date: ([^\n]+)/);
if (match) {
var date = new Date(match[1]);
data.update_time = date;
}
return cb(null, data);
});
}

var getRevComment = function(data, cb) {
exec(cliCommand(folder, "svn log -r BASE"), function(err, stdout, stderr) {
var rev = data.revision || "BASE";
exec(cliCommand(folder, "svn log -r " + rev), function(err, stdout, stderr) {
if(err !== null)
return cb(err);
data.revision = stdout.match(/^(r[0-9]+)\s\|/m);
if (rev === "BASE") {
data.revision = stdout.match(/^(r[0-9]+)\s\|/m);
if (data.revision) data.revision = data.revision[1];
}
data.comment = stdout.match(/lines?\s*\n((.|\n)*)\n-{72}\n$/);
if (data.revision) data.revision = data.revision[1];
if (data.comment) data.comment = data.comment[1].replace(/\n/g, '');
if (!data.update_time) {
data.update_time = stdout.match(/-+\n(.*?)\n/);
if (data.update_time) data.update_time = new Date(
data.update_time[1].split(" | ")[2]
);
}
cb(null, data);
});
}

var getDate = function(data, cb) {
if (data.update_time)
return cb(null, data);
fs.stat(folder+".svn", function(err, stats) {
if(err !== null)
return cb(err);
Expand Down

0 comments on commit dd981d8

Please sign in to comment.