1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
| module.exports = BranchSummary;
|
| function BranchSummary () {
| this.detached = false;
| this.current = '';
| this.all = [];
| this.branches = {};
| }
|
| BranchSummary.prototype.push = function (current, detached, name, commit, label) {
| if (current) {
| this.detached = detached;
| this.current = name;
| }
| this.all.push(name);
| this.branches[name] = {
| current: current,
| name: name,
| commit: commit,
| label: label
| };
| };
|
| BranchSummary.detachedRegex = /^(\*?\s+)\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/;
| BranchSummary.branchRegex = /^(\*?\s+)(\S+)\s+([a-z0-9]+)\s(.*)$/;
|
| BranchSummary.parse = function (commit) {
| var branchSummary = new BranchSummary();
|
| commit.split('\n')
| .forEach(function (line) {
| var detached = true;
| var branch = BranchSummary.detachedRegex.exec(line);
| if (!branch) {
| detached = false;
| branch = BranchSummary.branchRegex.exec(line);
| }
|
| if (branch) {
| branchSummary.push(
| branch[1].charAt(0) === '*',
| detached,
| branch[2],
| branch[3],
| branch[4]
| );
| }
| });
|
| return branchSummary;
| };
|
|