change separators for git - add support of multiline comments

This commit is contained in:
oleg 2015-12-22 22:08:59 +03:00
parent 91f8a68f29
commit 66eca6b4af

View File

@ -15,9 +15,8 @@ inherits(Scm, ParentScm);
Scm.prototype.defaultRev = 'master'; Scm.prototype.defaultRev = 'master';
// use 2 invisible separators as fields separator Scm.prototype._fieldsSeparator = '\u2063' + '\u2063';
Scm.prototype._fieldsSeparator = String.fromCharCode(2063); Scm.prototype._linesSeparator = '\u2028' + '\u2028';
Scm.prototype._fieldsSeparator += Scm.prototype._fieldsSeparator;
Scm.prototype._revTemplate = [ Scm.prototype._revTemplate = [
'%h', '%cn', '%cd', '%s', '%d' '%h', '%cn', '%cd', '%s', '%d'
@ -149,15 +148,16 @@ Scm.prototype.getChanges = function(rev1, rev2, callback) {
self.run({cmd: 'git', args: [ self.run({cmd: 'git', args: [
'log', rev1 ? rev1 + '..' + rev2 : rev2, 'log', rev1 ? rev1 + '..' + rev2 : rev2,
'--pretty=' + self._revTemplate '--pretty=' + self._revTemplate + self._linesSeparator
]}, this.slot()); ]}, this.slot());
}, },
function(err, currentRev, stdout) { function(err, currentRev, stdout) {
// always skip last line - it's empty // always skip last line - it's empty
var rows = stdout.split('\n').slice(0, -1); var rows = stdout.split(self._linesSeparator).slice(0, -1);
var changes = _(rows).map(function(str) { var changes = _(rows).map(function(str) {
return self._parseRev(str); // remove line break which git log add between commits
return self._parseRev(str.replace(/^\n/, ''));
}); });
this.pass(currentRev, changes); this.pass(currentRev, changes);