airbyte-faros-destination 0.19.57-rc3 → 0.19.57-rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,13 +4,11 @@ import { AzureTfvcConverter } from './common';
|
|
|
4
4
|
export declare class Changesets extends AzureTfvcConverter {
|
|
5
5
|
private readonly branchCollector;
|
|
6
6
|
private readonly fileCollector;
|
|
7
|
-
private readonly mergeChainTracker;
|
|
8
7
|
readonly destinationModels: ReadonlyArray<DestinationModel>;
|
|
9
8
|
id(record: AirbyteRecord): number;
|
|
10
9
|
convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
|
|
11
10
|
private getDiffStats;
|
|
12
11
|
private processChanges;
|
|
13
|
-
private getMergedChangesetIds;
|
|
14
12
|
private createBranchAssociations;
|
|
15
13
|
private createTaskAssociations;
|
|
16
14
|
onProcessingComplete(ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
|
|
@@ -5,69 +5,11 @@ const azure_devops_1 = require("faros-airbyte-common/azure-devops");
|
|
|
5
5
|
const faros_js_client_1 = require("faros-js-client");
|
|
6
6
|
const vcs_1 = require("../common/vcs");
|
|
7
7
|
const common_1 = require("./common");
|
|
8
|
-
/**
|
|
9
|
-
* Tracks merge chains to compute transitive branch associations.
|
|
10
|
-
* When a changeset is merged from branch A to B, all changesets on A
|
|
11
|
-
* are transitively associated with B.
|
|
12
|
-
*/
|
|
13
|
-
class MergeChainTracker {
|
|
14
|
-
constructor() {
|
|
15
|
-
// Maps changeset ID to the branch it was originally committed to
|
|
16
|
-
this.changesetBranch = new Map();
|
|
17
|
-
// Maps branch path to all changesets on that branch (including transitive)
|
|
18
|
-
this.branchChangesets = new Map();
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Track a changeset and return only NEW associations for this branch.
|
|
22
|
-
*/
|
|
23
|
-
trackAndGetNewChangesets(changesetId, branch, mergedChangesetIds) {
|
|
24
|
-
this.changesetBranch.set(changesetId, branch);
|
|
25
|
-
const branchChangesets = this.getOrCreateBranchSet(branch);
|
|
26
|
-
const newAssociations = new Set();
|
|
27
|
-
this.addIfNew(changesetId, branchChangesets, newAssociations);
|
|
28
|
-
this.processMergedChangesets(mergedChangesetIds, branchChangesets, newAssociations);
|
|
29
|
-
return newAssociations;
|
|
30
|
-
}
|
|
31
|
-
getOrCreateBranchSet(branch) {
|
|
32
|
-
if (!this.branchChangesets.has(branch)) {
|
|
33
|
-
this.branchChangesets.set(branch, new Set());
|
|
34
|
-
}
|
|
35
|
-
return this.branchChangesets.get(branch);
|
|
36
|
-
}
|
|
37
|
-
addIfNew(id, branchChangesets, newAssociations) {
|
|
38
|
-
if (!branchChangesets.has(id)) {
|
|
39
|
-
newAssociations.add(id);
|
|
40
|
-
branchChangesets.add(id);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
processMergedChangesets(mergedChangesetIds, branchChangesets, newAssociations) {
|
|
44
|
-
for (const mergedId of mergedChangesetIds) {
|
|
45
|
-
const mergedIdStr = String(mergedId);
|
|
46
|
-
const sourceChangesets = this.getSourceBranchChangesets(mergedIdStr);
|
|
47
|
-
if (sourceChangesets) {
|
|
48
|
-
for (const cs of sourceChangesets) {
|
|
49
|
-
this.addIfNew(cs, branchChangesets, newAssociations);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.addIfNew(mergedIdStr, branchChangesets, newAssociations);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
getSourceBranchChangesets(mergedIdStr) {
|
|
58
|
-
const sourceBranch = this.changesetBranch.get(mergedIdStr);
|
|
59
|
-
if (sourceBranch && this.branchChangesets.has(sourceBranch)) {
|
|
60
|
-
return this.branchChangesets.get(sourceBranch);
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
8
|
class Changesets extends common_1.AzureTfvcConverter {
|
|
66
9
|
constructor() {
|
|
67
10
|
super(...arguments);
|
|
68
11
|
this.branchCollector = new vcs_1.BranchCollector();
|
|
69
12
|
this.fileCollector = new vcs_1.FileCollector();
|
|
70
|
-
this.mergeChainTracker = new MergeChainTracker();
|
|
71
13
|
this.destinationModels = [
|
|
72
14
|
'tms_TaskCommitAssociation',
|
|
73
15
|
'vcs_Branch',
|
|
@@ -111,8 +53,8 @@ class Changesets extends common_1.AzureTfvcConverter {
|
|
|
111
53
|
diffStats: this.getDiffStats(changeset),
|
|
112
54
|
},
|
|
113
55
|
};
|
|
114
|
-
const
|
|
115
|
-
const branchAssociations = this.createBranchAssociations(commit, repository,
|
|
56
|
+
const commitFiles = this.processChanges(commit, repository, changeset.changes);
|
|
57
|
+
const branchAssociations = this.createBranchAssociations(commit, repository, changeset.branch, faros_js_client_1.Utils.toDate(changeset.createdDate));
|
|
116
58
|
const taskAssociations = this.createTaskAssociations(commit, changeset.workItems);
|
|
117
59
|
return [
|
|
118
60
|
commitRecord,
|
|
@@ -133,10 +75,9 @@ class Changesets extends common_1.AzureTfvcConverter {
|
|
|
133
75
|
linesDeleted: null,
|
|
134
76
|
};
|
|
135
77
|
}
|
|
136
|
-
processChanges(commit, repository,
|
|
78
|
+
processChanges(commit, repository, changes) {
|
|
137
79
|
var _a;
|
|
138
80
|
const commitFiles = [];
|
|
139
|
-
const mergedIds = [];
|
|
140
81
|
for (const change of changes !== null && changes !== void 0 ? changes : []) {
|
|
141
82
|
if ((_a = change.item) === null || _a === void 0 ? void 0 : _a.path) {
|
|
142
83
|
const filePath = change.item.path;
|
|
@@ -151,56 +92,24 @@ class Changesets extends common_1.AzureTfvcConverter {
|
|
|
151
92
|
},
|
|
152
93
|
});
|
|
153
94
|
}
|
|
154
|
-
for (const id of this.getMergedChangesetIds(change, changesetId, logger)) {
|
|
155
|
-
mergedIds.push(id);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return { commitFiles, mergedChangesetIds: new Set(mergedIds) };
|
|
159
|
-
}
|
|
160
|
-
getMergedChangesetIds(change, changesetId, logger) {
|
|
161
|
-
var _a, _b;
|
|
162
|
-
const ids = [];
|
|
163
|
-
const MAX_RANGE = 100000;
|
|
164
|
-
for (const mergeSource of (_a = change.mergeSources) !== null && _a !== void 0 ? _a : []) {
|
|
165
|
-
if (mergeSource.isRename) {
|
|
166
|
-
continue;
|
|
167
|
-
}
|
|
168
|
-
const from = mergeSource.versionFrom;
|
|
169
|
-
const to = (_b = mergeSource.versionTo) !== null && _b !== void 0 ? _b : from;
|
|
170
|
-
if (from && to) {
|
|
171
|
-
const rangeSize = to - from + 1;
|
|
172
|
-
if (rangeSize > MAX_RANGE) {
|
|
173
|
-
logger === null || logger === void 0 ? void 0 : logger.warn(`Changeset ${changesetId}: skipping merge range ${from}-${to} ` +
|
|
174
|
-
`(${rangeSize} changesets). Likely a baseless merge.`);
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
for (let i = from; i <= to; i++) {
|
|
178
|
-
ids.push(i);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
95
|
}
|
|
182
|
-
return
|
|
96
|
+
return commitFiles;
|
|
183
97
|
}
|
|
184
|
-
createBranchAssociations(commit, repository,
|
|
98
|
+
createBranchAssociations(commit, repository, branchName, committedAt) {
|
|
185
99
|
const branch = this.branchCollector.collectBranch(branchName, repository);
|
|
186
100
|
if (!branch) {
|
|
187
101
|
return [];
|
|
188
102
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const newChangesets = this.mergeChainTracker.trackAndGetNewChangesets(commit.sha, branchName, mergedChangesetIds);
|
|
192
|
-
const records = [];
|
|
193
|
-
for (const changesetId of newChangesets) {
|
|
194
|
-
records.push({
|
|
103
|
+
return [
|
|
104
|
+
{
|
|
195
105
|
model: 'vcs_BranchCommitAssociation',
|
|
196
106
|
record: {
|
|
197
|
-
commit
|
|
107
|
+
commit,
|
|
198
108
|
branch,
|
|
199
109
|
committedAt,
|
|
200
110
|
},
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return records;
|
|
111
|
+
},
|
|
112
|
+
];
|
|
204
113
|
}
|
|
205
114
|
createTaskAssociations(commit, workItems) {
|
|
206
115
|
const records = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changesets.js","sourceRoot":"","sources":["../../../src/converters/azure-tfvc/changesets.ts"],"names":[],"mappings":";;;AACA,oEAA+E;AAE/E,qDAAsC;AAEtC,uCAOuB;AAEvB,qCAAoE;
|
|
1
|
+
{"version":3,"file":"changesets.js","sourceRoot":"","sources":["../../../src/converters/azure-tfvc/changesets.ts"],"names":[],"mappings":"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"}
|