@teambit/merging 0.0.145 → 0.0.148
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.
- package/dist/merging.main.runtime.d.ts +9 -6
- package/dist/merging.main.runtime.js +116 -64
- package/dist/merging.main.runtime.js.map +1 -1
- package/package-tar/teambit-merging-0.0.148.tgz +0 -0
- package/package.json +9 -11
- /package/{preview-1661759589772.js → preview-1662020726651.js} +0 -0
- package/package-tar/teambit-merging-0.0.145.tgz +0 -0
|
@@ -6,17 +6,18 @@ import { SnappingMain } from '@teambit/snapping';
|
|
|
6
6
|
import { BitId } from '@teambit/legacy/dist/bit-id';
|
|
7
7
|
import { LaneId } from '@teambit/lane-id';
|
|
8
8
|
import { Lane, Version } from '@teambit/legacy/dist/scope/models';
|
|
9
|
-
import
|
|
9
|
+
import ConsumerComponent from '@teambit/legacy/dist/consumer/component/consumer-component';
|
|
10
10
|
import { MergeResultsThreeWay } from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';
|
|
11
11
|
import { DivergeData } from '@teambit/legacy/dist/scope/component-ops/diverge-data';
|
|
12
12
|
export declare type ComponentMergeStatus = {
|
|
13
|
-
|
|
13
|
+
currentComponent?: ConsumerComponent | null;
|
|
14
14
|
componentFromModel?: Version;
|
|
15
15
|
id: BitId;
|
|
16
16
|
unmergedMessage?: string;
|
|
17
17
|
unmergedLegitimately?: boolean;
|
|
18
18
|
mergeResults?: MergeResultsThreeWay | null;
|
|
19
19
|
divergeData?: DivergeData;
|
|
20
|
+
resolvedUnrelated?: MergeStrategy;
|
|
20
21
|
};
|
|
21
22
|
export declare class MergingMain {
|
|
22
23
|
private workspace;
|
|
@@ -37,10 +38,9 @@ export declare class MergingMain {
|
|
|
37
38
|
/**
|
|
38
39
|
* merge multiple components according to the "allComponentsStatus".
|
|
39
40
|
*/
|
|
40
|
-
mergeSnaps({ mergeStrategy, allComponentsStatus,
|
|
41
|
+
mergeSnaps({ mergeStrategy, allComponentsStatus, laneId, localLane, noSnap, snapMessage, build, skipDependencyInstallation, }: {
|
|
41
42
|
mergeStrategy: MergeStrategy;
|
|
42
43
|
allComponentsStatus: ComponentMergeStatus[];
|
|
43
|
-
remoteName: string | null;
|
|
44
44
|
laneId: LaneId;
|
|
45
45
|
localLane: Lane | null;
|
|
46
46
|
noSnap: boolean;
|
|
@@ -61,13 +61,16 @@ export declare class MergingMain {
|
|
|
61
61
|
*/
|
|
62
62
|
getComponentMergeStatus(id: BitId, // the id.version is the version we want to merge to the current component
|
|
63
63
|
localLane: Lane | null, // currently checked out lane. if on main, then it's null.
|
|
64
|
-
otherLaneName: string)
|
|
64
|
+
otherLaneName: string, // the lane name we want to merged to our lane. (can be also "main").
|
|
65
|
+
options?: {
|
|
66
|
+
resolveUnrelated?: MergeStrategy;
|
|
67
|
+
}): Promise<ComponentMergeStatus>;
|
|
65
68
|
private applyVersion;
|
|
66
69
|
private abortMerge;
|
|
67
70
|
private resolveMerge;
|
|
68
71
|
private getAllComponentsStatus;
|
|
69
72
|
private snapResolvedComponents;
|
|
70
|
-
private
|
|
73
|
+
private getIdsForUnmerged;
|
|
71
74
|
private getComponentsToMerge;
|
|
72
75
|
static slots: never[];
|
|
73
76
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
@@ -241,6 +241,16 @@ function _threeWayMerge() {
|
|
|
241
241
|
return data;
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
+
function _noCommonSnap() {
|
|
245
|
+
const data = require("@teambit/legacy/dist/scope/exceptions/no-common-snap");
|
|
246
|
+
|
|
247
|
+
_noCommonSnap = function () {
|
|
248
|
+
return data;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
return data;
|
|
252
|
+
}
|
|
253
|
+
|
|
244
254
|
function _mergeCmd() {
|
|
245
255
|
const data = require("./merge-cmd");
|
|
246
256
|
|
|
@@ -332,7 +342,6 @@ class MergingMain {
|
|
|
332
342
|
return this.mergeSnaps({
|
|
333
343
|
mergeStrategy,
|
|
334
344
|
allComponentsStatus,
|
|
335
|
-
remoteName: currentLaneId.isDefault() ? null : currentLaneId.scope,
|
|
336
345
|
laneId: currentLaneId,
|
|
337
346
|
localLane: currentLaneObject,
|
|
338
347
|
noSnap,
|
|
@@ -349,7 +358,6 @@ class MergingMain {
|
|
|
349
358
|
async mergeSnaps({
|
|
350
359
|
mergeStrategy,
|
|
351
360
|
allComponentsStatus,
|
|
352
|
-
remoteName,
|
|
353
361
|
laneId,
|
|
354
362
|
localLane,
|
|
355
363
|
noSnap,
|
|
@@ -373,21 +381,22 @@ class MergingMain {
|
|
|
373
381
|
// which can be an issue when some components are also dependencies of others
|
|
374
382
|
|
|
375
383
|
const componentsResults = await (0, _pMapSeries().default)(succeededComponents, async ({
|
|
376
|
-
|
|
384
|
+
currentComponent,
|
|
377
385
|
id,
|
|
378
|
-
mergeResults
|
|
386
|
+
mergeResults,
|
|
387
|
+
resolvedUnrelated
|
|
379
388
|
}) => {
|
|
380
389
|
const modelComponent = await consumer.scope.getModelComponent(id);
|
|
390
|
+
const updatedLaneId = laneId.isDefault() ? _laneId().LaneId.from(laneId.name, id.scope) : laneId;
|
|
381
391
|
return this.applyVersion({
|
|
382
|
-
|
|
383
|
-
componentFromFS,
|
|
392
|
+
currentComponent,
|
|
384
393
|
id,
|
|
385
394
|
mergeResults,
|
|
386
395
|
mergeStrategy,
|
|
387
396
|
remoteHead: modelComponent.getRef(id.version),
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
397
|
+
laneId: updatedLaneId,
|
|
398
|
+
localLane,
|
|
399
|
+
resolvedUnrelated
|
|
391
400
|
});
|
|
392
401
|
});
|
|
393
402
|
const leftUnresolvedConflicts = componentWithConflict && mergeStrategy === 'manual';
|
|
@@ -404,7 +413,7 @@ class MergingMain {
|
|
|
404
413
|
await consumer.scope.objects.persist(); // persist anyway, if localLane is null it should save all main heads
|
|
405
414
|
|
|
406
415
|
await consumer.scope.objects.unmergedComponents.write(); // if one of the component has conflict, don't snap-merge. otherwise, some of the components would be snap-merged
|
|
407
|
-
// and some not.
|
|
416
|
+
// and some not. besides the fact that it could by mistake tag dependent, it's a confusing state. better not snap.
|
|
408
417
|
|
|
409
418
|
const mergeSnapResults = noSnap || leftUnresolvedConflicts ? null : await this.snapResolvedComponents(consumer, snapMessage, build);
|
|
410
419
|
return {
|
|
@@ -429,7 +438,8 @@ class MergingMain {
|
|
|
429
438
|
|
|
430
439
|
async getComponentMergeStatus(id, // the id.version is the version we want to merge to the current component
|
|
431
440
|
localLane, // currently checked out lane. if on main, then it's null.
|
|
432
|
-
otherLaneName)
|
|
441
|
+
otherLaneName, // the lane name we want to merged to our lane. (can be also "main").
|
|
442
|
+
options) {
|
|
433
443
|
var _modelComponent$laneH;
|
|
434
444
|
|
|
435
445
|
const consumer = this.workspace.consumer;
|
|
@@ -451,8 +461,8 @@ class MergingMain {
|
|
|
451
461
|
|
|
452
462
|
const unmerged = consumer.scope.objects.unmergedComponents.getEntry(id.name);
|
|
453
463
|
|
|
454
|
-
if (unmerged
|
|
455
|
-
return returnUnmerged(`component ${id.toStringWithoutVersion()}
|
|
464
|
+
if (unmerged) {
|
|
465
|
+
return returnUnmerged(`component ${id.toStringWithoutVersion()} is in during-merge state a previous merge, please snap/tag it first (or use bit merge --resolve/--abort)`);
|
|
456
466
|
}
|
|
457
467
|
|
|
458
468
|
const repo = consumer.scope.objects;
|
|
@@ -463,6 +473,10 @@ class MergingMain {
|
|
|
463
473
|
});
|
|
464
474
|
const componentOnLane = await modelComponent.loadVersion(version, consumer.scope.objects);
|
|
465
475
|
|
|
476
|
+
if (componentOnLane.isRemoved()) {
|
|
477
|
+
return returnUnmerged(`component has been removed`, true);
|
|
478
|
+
}
|
|
479
|
+
|
|
466
480
|
const getCurrentId = () => {
|
|
467
481
|
if (existingBitMapId) return existingBitMapId;
|
|
468
482
|
|
|
@@ -487,28 +501,21 @@ class MergingMain {
|
|
|
487
501
|
if (!currentId) {
|
|
488
502
|
const divergeData = await (0, _getDivergeData().getDivergeData)(repo, modelComponent, otherLaneHead, null, false);
|
|
489
503
|
return {
|
|
490
|
-
|
|
504
|
+
currentComponent: null,
|
|
491
505
|
componentFromModel: componentOnLane,
|
|
492
506
|
id,
|
|
493
507
|
mergeResults: null,
|
|
494
508
|
divergeData
|
|
495
509
|
};
|
|
496
|
-
}
|
|
497
|
-
// if (currentlyUsedVersion === version) {
|
|
498
|
-
// // @todo: maybe this check is not needed as we check for diverge later on
|
|
499
|
-
// if (localLane || modelComponent.hasHead()) {
|
|
500
|
-
// return returnUnmerged(`component ${id.toStringWithoutVersion()} is already merged`, true);
|
|
501
|
-
// }
|
|
502
|
-
// }
|
|
503
|
-
|
|
510
|
+
}
|
|
504
511
|
|
|
505
512
|
const getCurrentComponent = () => {
|
|
506
513
|
if (existingBitMapId) return consumer.loadComponent(existingBitMapId);
|
|
507
514
|
return consumer.scope.getConsumerComponent(currentId);
|
|
508
515
|
};
|
|
509
516
|
|
|
510
|
-
const
|
|
511
|
-
const componentModificationStatus = await consumer.getComponentStatusById(
|
|
517
|
+
const currentComponent = await getCurrentComponent();
|
|
518
|
+
const componentModificationStatus = await consumer.getComponentStatusById(currentComponent.id);
|
|
512
519
|
|
|
513
520
|
if (componentModificationStatus.modified) {
|
|
514
521
|
return returnUnmerged(`unable to merge ${id.toStringWithoutVersion()}, the component is modified, please snap/tag it first`);
|
|
@@ -524,19 +531,45 @@ class MergingMain {
|
|
|
524
531
|
const divergeData = await (0, _getDivergeData().getDivergeData)(repo, modelComponent, otherLaneHead, localHead, false);
|
|
525
532
|
|
|
526
533
|
if (divergeData.err) {
|
|
527
|
-
|
|
534
|
+
if (divergeData.err instanceof _noCommonSnap().NoCommonSnap && options !== null && options !== void 0 && options.resolveUnrelated) {
|
|
535
|
+
if ((options === null || options === void 0 ? void 0 : options.resolveUnrelated) === 'theirs') {
|
|
536
|
+
// just override with the model data
|
|
537
|
+
return {
|
|
538
|
+
currentComponent,
|
|
539
|
+
componentFromModel: componentOnLane,
|
|
540
|
+
id,
|
|
541
|
+
mergeResults: null,
|
|
542
|
+
divergeData,
|
|
543
|
+
resolvedUnrelated: 'theirs'
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
if ((options === null || options === void 0 ? void 0 : options.resolveUnrelated) === 'ours') {
|
|
548
|
+
return {
|
|
549
|
+
currentComponent,
|
|
550
|
+
id,
|
|
551
|
+
mergeResults: null,
|
|
552
|
+
divergeData,
|
|
553
|
+
resolvedUnrelated: 'ours'
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
throw new Error(`unsupported strategy "${options === null || options === void 0 ? void 0 : options.resolveUnrelated}" of resolve-unrelated. supported strategies are: [ours, theirs]`);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
return returnUnmerged(`unable to traverse ${currentComponent.id.toString()} history. error: ${divergeData.err.message}`);
|
|
528
561
|
}
|
|
529
562
|
|
|
530
563
|
if (!divergeData.isDiverged()) {
|
|
531
564
|
if (divergeData.isLocalAhead()) {
|
|
532
565
|
// do nothing!
|
|
533
|
-
return returnUnmerged(`component ${
|
|
566
|
+
return returnUnmerged(`component ${currentComponent.id.toString()} is ahead, nothing to merge`, true);
|
|
534
567
|
}
|
|
535
568
|
|
|
536
569
|
if (divergeData.isRemoteAhead()) {
|
|
537
570
|
// just override with the model data
|
|
538
571
|
return {
|
|
539
|
-
|
|
572
|
+
currentComponent,
|
|
540
573
|
componentFromModel: componentOnLane,
|
|
541
574
|
id,
|
|
542
575
|
mergeResults: null,
|
|
@@ -545,7 +578,7 @@ class MergingMain {
|
|
|
545
578
|
} // we know that localHead and remoteHead are set, so if none of them is ahead they must be equal
|
|
546
579
|
|
|
547
580
|
|
|
548
|
-
return returnUnmerged(`component ${
|
|
581
|
+
return returnUnmerged(`component ${currentComponent.id.toString()} is already merged`, true);
|
|
549
582
|
}
|
|
550
583
|
|
|
551
584
|
const baseSnap = divergeData.commonSnapBeforeDiverge; // must be set when isTrueMerge
|
|
@@ -557,12 +590,12 @@ class MergingMain {
|
|
|
557
590
|
consumer,
|
|
558
591
|
otherComponent,
|
|
559
592
|
otherLabel: `${otherLaneHead.toString()} (${otherLaneName})`,
|
|
560
|
-
currentComponent
|
|
593
|
+
currentComponent,
|
|
561
594
|
currentLabel: `${currentId.version} (${currentLaneName})`,
|
|
562
595
|
baseComponent
|
|
563
596
|
});
|
|
564
597
|
return {
|
|
565
|
-
|
|
598
|
+
currentComponent,
|
|
566
599
|
id,
|
|
567
600
|
mergeResults,
|
|
568
601
|
divergeData
|
|
@@ -570,16 +603,16 @@ class MergingMain {
|
|
|
570
603
|
}
|
|
571
604
|
|
|
572
605
|
async applyVersion({
|
|
573
|
-
|
|
574
|
-
componentFromFS,
|
|
606
|
+
currentComponent,
|
|
575
607
|
id,
|
|
576
608
|
mergeResults,
|
|
577
609
|
mergeStrategy,
|
|
578
610
|
remoteHead,
|
|
579
|
-
remoteName,
|
|
580
611
|
laneId,
|
|
581
|
-
localLane
|
|
612
|
+
localLane,
|
|
613
|
+
resolvedUnrelated
|
|
582
614
|
}) {
|
|
615
|
+
const consumer = this.workspace.consumer;
|
|
583
616
|
let filesStatus = {};
|
|
584
617
|
const unmergedComponent = {
|
|
585
618
|
// @ts-ignore
|
|
@@ -587,23 +620,40 @@ class MergingMain {
|
|
|
587
620
|
name: id.name,
|
|
588
621
|
scope: id.scope
|
|
589
622
|
},
|
|
590
|
-
// @ts-ignore
|
|
591
623
|
head: remoteHead,
|
|
592
|
-
|
|
593
|
-
|
|
624
|
+
remote: laneId.scope,
|
|
625
|
+
// @todo: remove. it has been deprecated around 0.0.832
|
|
594
626
|
lane: laneId.name,
|
|
595
|
-
|
|
596
|
-
|
|
627
|
+
// @todo: remove. it has been deprecated around 0.0.832
|
|
628
|
+
laneId
|
|
629
|
+
};
|
|
630
|
+
id = currentComponent ? currentComponent.id : id;
|
|
631
|
+
const modelComponent = await consumer.scope.getModelComponent(id);
|
|
632
|
+
|
|
633
|
+
const handleResolveUnrelated = () => {
|
|
634
|
+
if (!currentComponent) throw new Error('currentComponent must be defined when resolvedUnrelated');
|
|
635
|
+
if (!localLane) throw new Error('localLane must be defined when resolvedUnrelated');
|
|
636
|
+
const head = modelComponent.getRef(currentComponent.id.version);
|
|
637
|
+
if (!head) throw new Error(`unable to get the head for resolved-unrelated ${id.toString()}`);
|
|
638
|
+
unmergedComponent.laneId = localLane.toLaneId();
|
|
639
|
+
unmergedComponent.head = head;
|
|
640
|
+
unmergedComponent.unrelated = true;
|
|
641
|
+
consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);
|
|
642
|
+
return {
|
|
643
|
+
id,
|
|
644
|
+
filesStatus
|
|
645
|
+
};
|
|
597
646
|
};
|
|
598
|
-
id = componentFromFS ? componentFromFS.id : id;
|
|
599
647
|
|
|
600
|
-
|
|
601
|
-
if (!
|
|
602
|
-
|
|
603
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
648
|
+
const markAllFilesAsUnchanged = () => {
|
|
649
|
+
if (!currentComponent) throw new Error(`applyVersion expect to get currentComponent for ${id.toString()}`);
|
|
650
|
+
currentComponent.files.forEach(file => {
|
|
604
651
|
filesStatus[(0, _utils().pathNormalizeToLinux)(file.relative)] = _mergeVersion().FileStatus.unchanged;
|
|
605
652
|
});
|
|
606
|
-
|
|
653
|
+
};
|
|
654
|
+
|
|
655
|
+
if (mergeResults && mergeResults.hasConflicts && mergeStrategy === _mergeVersion().MergeOptions.ours) {
|
|
656
|
+
markAllFilesAsUnchanged();
|
|
607
657
|
consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);
|
|
608
658
|
return {
|
|
609
659
|
id,
|
|
@@ -611,15 +661,18 @@ class MergingMain {
|
|
|
611
661
|
};
|
|
612
662
|
}
|
|
613
663
|
|
|
664
|
+
if (resolvedUnrelated && resolvedUnrelated === 'ours') {
|
|
665
|
+
markAllFilesAsUnchanged();
|
|
666
|
+
localLane === null || localLane === void 0 ? void 0 : localLane.addComponent({
|
|
667
|
+
id,
|
|
668
|
+
head: remoteHead
|
|
669
|
+
});
|
|
670
|
+
return handleResolveUnrelated();
|
|
671
|
+
}
|
|
672
|
+
|
|
614
673
|
const remoteId = id.changeVersion(remoteHead.toString());
|
|
615
674
|
const idToLoad = !mergeResults || mergeStrategy === _mergeVersion().MergeOptions.theirs ? remoteId : id;
|
|
616
675
|
const componentWithDependencies = await consumer.loadComponentWithDependenciesFromModel(idToLoad);
|
|
617
|
-
|
|
618
|
-
if (!id.scope) {
|
|
619
|
-
componentWithDependencies.dependencies = [];
|
|
620
|
-
componentWithDependencies.devDependencies = [];
|
|
621
|
-
}
|
|
622
|
-
|
|
623
676
|
const files = componentWithDependencies.component.files;
|
|
624
677
|
files.forEach(file => {
|
|
625
678
|
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
@@ -636,8 +689,6 @@ class MergingMain {
|
|
|
636
689
|
filesStatus = _objectSpread(_objectSpread({}, filesStatus), modifiedStatus);
|
|
637
690
|
}
|
|
638
691
|
|
|
639
|
-
const shouldDependenciesSaveAsComponents = await consumer.shouldDependenciesSavedAsComponents([id]);
|
|
640
|
-
componentWithDependencies.component.dependenciesSavedAsComponents = shouldDependenciesSaveAsComponents[0].saveDependenciesAsComponents;
|
|
641
692
|
const manyComponentsWriter = new (_manyComponentsWriter().default)({
|
|
642
693
|
consumer,
|
|
643
694
|
componentsWithDependencies: [componentWithDependencies],
|
|
@@ -656,10 +707,7 @@ class MergingMain {
|
|
|
656
707
|
|
|
657
708
|
if (mergeResults) {
|
|
658
709
|
if (mergeResults.hasConflicts && mergeStrategy === _mergeVersion().MergeOptions.manual) {
|
|
659
|
-
unmergedComponent.resolved = false;
|
|
660
710
|
unmergedComponent.unmergedPaths = mergeResults.modifiedFiles.filter(f => f.conflict).map(f => f.filePath);
|
|
661
|
-
} else {
|
|
662
|
-
unmergedComponent.resolved = true;
|
|
663
711
|
}
|
|
664
712
|
|
|
665
713
|
consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);
|
|
@@ -668,9 +716,13 @@ class MergingMain {
|
|
|
668
716
|
id,
|
|
669
717
|
head: remoteHead
|
|
670
718
|
});
|
|
719
|
+
|
|
720
|
+
if (resolvedUnrelated) {
|
|
721
|
+
// must be "theirs"
|
|
722
|
+
return handleResolveUnrelated();
|
|
723
|
+
}
|
|
671
724
|
} else {
|
|
672
725
|
// this is main
|
|
673
|
-
const modelComponent = await consumer.scope.getModelComponent(id);
|
|
674
726
|
modelComponent.setHead(remoteHead); // mark it as local, otherwise, when importing this component from a remote, it'll override it.
|
|
675
727
|
|
|
676
728
|
modelComponent.markVersionAsLocal(remoteHead.toString());
|
|
@@ -684,7 +736,7 @@ class MergingMain {
|
|
|
684
736
|
}
|
|
685
737
|
|
|
686
738
|
async abortMerge(consumer, values) {
|
|
687
|
-
const ids = this.
|
|
739
|
+
const ids = this.getIdsForUnmerged(consumer, values); // @ts-ignore not clear yet what to do with other flags
|
|
688
740
|
|
|
689
741
|
const results = await (0, _checkoutVersion().default)(consumer, {
|
|
690
742
|
ids,
|
|
@@ -698,7 +750,7 @@ class MergingMain {
|
|
|
698
750
|
}
|
|
699
751
|
|
|
700
752
|
async resolveMerge(consumer, values, snapMessage, build) {
|
|
701
|
-
const ids = this.
|
|
753
|
+
const ids = this.getIdsForUnmerged(consumer, values); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
702
754
|
|
|
703
755
|
const {
|
|
704
756
|
snappedComponents
|
|
@@ -735,13 +787,13 @@ class MergingMain {
|
|
|
735
787
|
}
|
|
736
788
|
|
|
737
789
|
async snapResolvedComponents(consumer, snapMessage, build) {
|
|
738
|
-
const
|
|
790
|
+
const unmergedComponents = consumer.scope.objects.unmergedComponents.getComponents();
|
|
739
791
|
|
|
740
|
-
_logger().default.debug(`merge-snaps, snapResolvedComponents, total ${
|
|
792
|
+
_logger().default.debug(`merge-snaps, snapResolvedComponents, total ${unmergedComponents.length.toString()} components`);
|
|
741
793
|
|
|
742
|
-
if (!
|
|
794
|
+
if (!unmergedComponents.length) return null;
|
|
743
795
|
|
|
744
|
-
const ids = _bitId().BitIds.fromArray(
|
|
796
|
+
const ids = _bitId().BitIds.fromArray(unmergedComponents.map(r => new (_bitId().BitId)(r.id)));
|
|
745
797
|
|
|
746
798
|
return this.snapping.snap({
|
|
747
799
|
legacyBitIds: ids,
|
|
@@ -750,7 +802,7 @@ class MergingMain {
|
|
|
750
802
|
});
|
|
751
803
|
}
|
|
752
804
|
|
|
753
|
-
|
|
805
|
+
getIdsForUnmerged(consumer, idsStr) {
|
|
754
806
|
if (idsStr && idsStr.length) {
|
|
755
807
|
const bitIds = idsStr.map(id => consumer.getParsedId(id));
|
|
756
808
|
bitIds.forEach(id => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MergingMain","constructor","workspace","snapping","consumer","merge","values","mergeStrategy","abort","resolve","noSnap","message","build","skipDependencyInstallation","ConsumerNotFound","mergeResults","firstValue","R","head","resolveMerge","abortMerge","BitId","isValidVersion","bitIds","getComponentsToMerge","mergeComponentsFromRemote","version","ids","tail","mergeVersion","onDestroy","snapMessage","currentLaneId","getCurrentLaneId","currentLaneObject","getCurrentLaneObject","allComponentsStatus","getAllComponentsStatus","failedComponents","filter","c","unmergedMessage","unmergedLegitimately","length","failureMsgs","map","failedComponent","chalk","bold","id","toString","red","join","BitError","mergeSnaps","remoteName","isDefault","scope","laneId","localLane","componentWithConflict","find","component","hasConflicts","getMergeStrategyInteractive","componentStatus","failureMessage","unchangedLegitimately","succeededComponents","componentsResults","mapSeries","componentFromFS","modelComponent","getModelComponent","applyVersion","remoteHead","getRef","leftUnresolvedConflicts","install","undefined","dedupe","updateExisting","import","objects","add","persist","unmergedComponents","write","mergeSnapResults","snapResolvedComponents","components","getComponentMergeStatus","otherLaneName","returnUnmerged","msg","getModelComponentIfExist","unmerged","getEntry","name","resolved","toStringWithoutVersion","repo","otherLaneHead","existingBitMapId","bitMap","getBitIdIfExist","ignoreVersion","componentOnLane","loadVersion","getCurrentId","idOnLane","getComponent","changeVersion","getHeadAsTagIfExist","currentId","divergeData","getDivergeData","componentFromModel","getCurrentComponent","loadComponent","getConsumerComponent","componentModificationStatus","getComponentStatusById","modified","laneHeadIsDifferentThanCheckedOut","laneHeadLocal","localHead","Ref","from","Error","err","isDiverged","isLocalAhead","isRemoteAhead","baseSnap","commonSnapBeforeDiverge","baseComponent","otherComponent","currentLaneName","toLaneId","threeWayMerge","otherLabel","currentComponent","currentLabel","filesStatus","unmergedComponent","remote","lane","MergeOptions","ours","files","forEach","file","pathNormalizeToLinux","relative","FileStatus","unchanged","addEntry","remoteId","idToLoad","theirs","componentWithDependencies","loadComponentWithDependenciesFromModel","dependencies","devDependencies","updated","modifiedStatus","modifiedFiles","applyModifiedVersion","shouldDependenciesSaveAsComponents","shouldDependenciesSavedAsComponents","dependenciesSavedAsComponents","saveDependenciesAsComponents","manyComponentsWriter","ManyComponentsWriter","componentsWithDependencies","installNpmPackages","override","writeConfig","verbose","writeDists","writePackageJson","writeAll","manual","unmergedPaths","f","conflict","filePath","addComponent","setHead","markVersionAsLocal","getIdsForUnresolved","results","checkoutVersion","reset","removeComponent","abortedComponents","snappedComponents","snap","legacyBitIds","BitIds","fromArray","resolvedComponents","localLaneObject","tmp","Tmp","componentsStatus","Promise","all","bitId","remoteScopeName","remoteLaneId","LaneId","remoteLanes","laneIdStr","clear","getResolvedComponents","logger","debug","r","idsStr","getParsedId","entry","GeneralError","unresolvedComponents","getComponents","u","hasWildcard","componentsList","ComponentsList","listComponentsByIdsWithWildcard","provider","cli","merging","register","MergeCmd","CLIAspect","WorkspaceAspect","SnappingAspect","MainRuntime","MergingAspect","addRuntime"],"sources":["merging.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport R from 'ramda';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport ComponentsList from '@teambit/legacy/dist/consumer/component/components-list';\nimport {\n ApplyVersionResults,\n MergeStrategy,\n mergeVersion,\n ApplyVersionResult,\n FailedComponents,\n FileStatus,\n getMergeStrategyInteractive,\n MergeOptions,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';\nimport SnappingAspect, { SnappingMain } from '@teambit/snapping';\nimport hasWildcard from '@teambit/legacy/dist/utils/string/has-wildcard';\nimport mapSeries from 'p-map-series';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport { BitError } from '@teambit/bit-error';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport { LaneId } from '@teambit/lane-id';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { AutoTagResult } from '@teambit/legacy/dist/scope/component-ops/auto-tag';\nimport { getDivergeData } from '@teambit/legacy/dist/scope/component-ops/get-diverge-data';\nimport { UnmergedComponent } from '@teambit/legacy/dist/scope/lanes/unmerged-components';\nimport { Lane, Version } from '@teambit/legacy/dist/scope/models';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\nimport chalk from 'chalk';\nimport { Tmp } from '@teambit/legacy/dist/scope/repositories';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport ManyComponentsWriter from '@teambit/legacy/dist/consumer/component-ops/many-components-writer';\nimport Component from '@teambit/legacy/dist/consumer/component/consumer-component';\nimport checkoutVersion, { applyModifiedVersion } from '@teambit/legacy/dist/consumer/versions-ops/checkout-version';\nimport threeWayMerge, {\n MergeResultsThreeWay,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';\nimport { DivergeData } from '@teambit/legacy/dist/scope/component-ops/diverge-data';\nimport { MergeCmd } from './merge-cmd';\nimport { MergingAspect } from './merging.aspect';\n\nexport type ComponentMergeStatus = {\n componentFromFS?: Component | null;\n componentFromModel?: Version;\n id: BitId;\n unmergedMessage?: string;\n unmergedLegitimately?: boolean; // failed to merge but for a legitimate reason, such as, up-to-date\n mergeResults?: MergeResultsThreeWay | null;\n divergeData?: DivergeData;\n};\n\nexport class MergingMain {\n private consumer: Consumer;\n constructor(private workspace: Workspace, private snapping: SnappingMain) {\n this.consumer = this.workspace?.consumer;\n }\n\n /**\n * merge components according to the \"values\" param.\n * if the first param is a version, then merge the component ids to that version.\n * otherwise, merge from the remote head to the local.\n */\n async merge(\n values: string[],\n mergeStrategy: MergeStrategy,\n abort: boolean,\n resolve: boolean,\n noSnap: boolean,\n message: string,\n build: boolean,\n skipDependencyInstallation: boolean\n ): Promise<ApplyVersionResults> {\n if (!this.workspace) throw new ConsumerNotFound();\n const consumer: Consumer = this.workspace.consumer;\n let mergeResults;\n const firstValue = R.head(values);\n if (resolve) {\n mergeResults = await this.resolveMerge(consumer, values, message, build);\n } else if (abort) {\n mergeResults = await this.abortMerge(consumer, values);\n } else if (!BitId.isValidVersion(firstValue)) {\n const bitIds = this.getComponentsToMerge(consumer, values);\n // @todo: version could be the lane only or remote/lane\n mergeResults = await this.mergeComponentsFromRemote(\n consumer,\n bitIds,\n mergeStrategy,\n noSnap,\n message,\n build,\n skipDependencyInstallation\n );\n } else {\n const version = firstValue;\n const ids = R.tail(values);\n const bitIds = this.getComponentsToMerge(consumer, ids);\n mergeResults = await mergeVersion(consumer, version, bitIds, mergeStrategy);\n }\n await consumer.onDestroy();\n return mergeResults;\n }\n\n /**\n * when user is on main, it merges the remote main components into local.\n * when user is on a lane, it merges the remote lane components into the local lane.\n */\n async mergeComponentsFromRemote(\n consumer: Consumer,\n bitIds: BitId[],\n mergeStrategy: MergeStrategy,\n noSnap: boolean,\n snapMessage: string,\n build: boolean,\n skipDependencyInstallation: boolean\n ): Promise<ApplyVersionResults> {\n const currentLaneId = consumer.getCurrentLaneId();\n const currentLaneObject = await consumer.getCurrentLaneObject();\n const allComponentsStatus = await this.getAllComponentsStatus(bitIds, currentLaneId, currentLaneObject);\n const failedComponents = allComponentsStatus.filter((c) => c.unmergedMessage && !c.unmergedLegitimately);\n if (failedComponents.length) {\n const failureMsgs = failedComponents\n .map(\n (failedComponent) =>\n `${chalk.bold(failedComponent.id.toString())} - ${chalk.red(failedComponent.unmergedMessage as string)}`\n )\n .join('\\n');\n throw new BitError(`unable to merge due to the following failures:\\n${failureMsgs}`);\n }\n\n return this.mergeSnaps({\n mergeStrategy,\n allComponentsStatus,\n remoteName: currentLaneId.isDefault() ? null : currentLaneId.scope,\n laneId: currentLaneId,\n localLane: currentLaneObject,\n noSnap,\n snapMessage,\n build,\n skipDependencyInstallation,\n });\n }\n\n /**\n * merge multiple components according to the \"allComponentsStatus\".\n */\n async mergeSnaps({\n mergeStrategy,\n allComponentsStatus,\n remoteName,\n laneId,\n localLane,\n noSnap,\n snapMessage,\n build,\n skipDependencyInstallation,\n }: {\n mergeStrategy: MergeStrategy;\n allComponentsStatus: ComponentMergeStatus[];\n remoteName: string | null;\n laneId: LaneId;\n localLane: Lane | null;\n noSnap: boolean;\n snapMessage: string;\n build: boolean;\n skipDependencyInstallation?: boolean;\n }): Promise<ApplyVersionResults> {\n const consumer = this.workspace.consumer;\n const componentWithConflict = allComponentsStatus.find(\n (component) => component.mergeResults && component.mergeResults.hasConflicts\n );\n if (componentWithConflict && !mergeStrategy) {\n mergeStrategy = await getMergeStrategyInteractive();\n }\n const failedComponents: FailedComponents[] = allComponentsStatus\n .filter((componentStatus) => componentStatus.unmergedMessage)\n .map((componentStatus) => ({\n id: componentStatus.id,\n failureMessage: componentStatus.unmergedMessage as string,\n unchangedLegitimately: componentStatus.unmergedLegitimately,\n }));\n const succeededComponents = allComponentsStatus.filter((componentStatus) => !componentStatus.unmergedMessage);\n // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,\n // which can be an issue when some components are also dependencies of others\n const componentsResults = await mapSeries(succeededComponents, async ({ componentFromFS, id, mergeResults }) => {\n const modelComponent = await consumer.scope.getModelComponent(id);\n return this.applyVersion({\n consumer,\n componentFromFS,\n id,\n mergeResults,\n mergeStrategy,\n remoteHead: modelComponent.getRef(id.version as string) as Ref,\n remoteName: remoteName || componentFromFS?.scope || null,\n laneId,\n localLane,\n });\n });\n\n const leftUnresolvedConflicts = componentWithConflict && mergeStrategy === 'manual';\n\n if (!skipDependencyInstallation && !leftUnresolvedConflicts) {\n await this.workspace.install(undefined, {\n dedupe: true,\n updateExisting: false,\n import: false,\n });\n }\n\n if (localLane) consumer.scope.objects.add(localLane);\n\n await consumer.scope.objects.persist(); // persist anyway, if localLane is null it should save all main heads\n\n await consumer.scope.objects.unmergedComponents.write();\n\n // if one of the component has conflict, don't snap-merge. otherwise, some of the components would be snap-merged\n // and some not. except the fact that it could by mistake tag dependent, it's a confusing state. better not snap.\n const mergeSnapResults =\n noSnap || leftUnresolvedConflicts ? null : await this.snapResolvedComponents(consumer, snapMessage, build);\n\n return {\n components: componentsResults,\n failedComponents,\n mergeSnapResults,\n leftUnresolvedConflicts,\n };\n }\n\n /**\n * this function gets called from two different commands:\n * 1. \"bit merge <ids...>\", when merging a component from a remote to the local.\n * in this case, the remote and local are on the same lane or both on main.\n * 2. \"bit lane merge\", when merging from one lane to another.\n * @param id\n * @param localLane\n * @param otherLaneName\n * @param existingOnWorkspaceOnly\n * @returns\n */\n async getComponentMergeStatus(\n id: BitId, // the id.version is the version we want to merge to the current component\n localLane: Lane | null, // currently checked out lane. if on main, then it's null.\n otherLaneName: string // the lane name we want to merged to our lane. (can be also \"main\").\n ): Promise<ComponentMergeStatus> {\n const consumer = this.workspace.consumer;\n const componentStatus: ComponentMergeStatus = { id };\n const returnUnmerged = (msg: string, unmergedLegitimately = false) => {\n componentStatus.unmergedMessage = msg;\n componentStatus.unmergedLegitimately = unmergedLegitimately;\n return componentStatus;\n };\n const modelComponent = await consumer.scope.getModelComponentIfExist(id);\n if (!modelComponent) {\n return returnUnmerged(\n `component ${id.toString()} is on the lane/main but its objects were not found, please re-import the lane`\n );\n }\n const unmerged = consumer.scope.objects.unmergedComponents.getEntry(id.name);\n if (unmerged && unmerged.resolved === false) {\n return returnUnmerged(\n `component ${id.toStringWithoutVersion()} has conflicts that need to be resolved first, please use bit merge --resolve/--abort`\n );\n }\n const repo = consumer.scope.objects;\n const version = id.version as string;\n const otherLaneHead = modelComponent.getRef(version);\n const existingBitMapId = consumer.bitMap.getBitIdIfExist(id, { ignoreVersion: true });\n const componentOnLane: Version = await modelComponent.loadVersion(version, consumer.scope.objects);\n const getCurrentId = () => {\n if (existingBitMapId) return existingBitMapId;\n if (localLane) {\n const idOnLane = localLane.getComponent(id);\n if (!idOnLane) return null;\n return idOnLane.id.changeVersion(idOnLane.head.toString());\n }\n // it's on main\n const head = modelComponent.getHeadAsTagIfExist();\n if (head) {\n return id.changeVersion(head);\n }\n return null;\n };\n const currentId = getCurrentId();\n if (!currentId) {\n const divergeData = await getDivergeData(repo, modelComponent, otherLaneHead, null, false);\n return { componentFromFS: null, componentFromModel: componentOnLane, id, mergeResults: null, divergeData };\n }\n\n // const currentlyUsedVersion = existingBitMapId.version;\n // if (currentlyUsedVersion === version) {\n // // @todo: maybe this check is not needed as we check for diverge later on\n // if (localLane || modelComponent.hasHead()) {\n // return returnUnmerged(`component ${id.toStringWithoutVersion()} is already merged`, true);\n // }\n // }\n const getCurrentComponent = () => {\n if (existingBitMapId) return consumer.loadComponent(existingBitMapId);\n return consumer.scope.getConsumerComponent(currentId);\n };\n const component = await getCurrentComponent();\n const componentModificationStatus = await consumer.getComponentStatusById(component.id);\n if (componentModificationStatus.modified) {\n return returnUnmerged(\n `unable to merge ${id.toStringWithoutVersion()}, the component is modified, please snap/tag it first`\n );\n }\n const laneHeadIsDifferentThanCheckedOut =\n localLane && existingBitMapId?.version && modelComponent.laneHeadLocal?.toString() !== existingBitMapId?.version;\n const localHead = laneHeadIsDifferentThanCheckedOut ? Ref.from(existingBitMapId.version) : null;\n\n if (!otherLaneHead) {\n throw new Error(`merging: unable finding a hash for the version ${version} of ${id.toString()}`);\n }\n const divergeData = await getDivergeData(repo, modelComponent, otherLaneHead, localHead, false);\n if (divergeData.err) {\n return returnUnmerged(`unable to traverse ${component.id.toString()} history. error: ${divergeData.err.message}`);\n }\n if (!divergeData.isDiverged()) {\n if (divergeData.isLocalAhead()) {\n // do nothing!\n return returnUnmerged(`component ${component.id.toString()} is ahead, nothing to merge`, true);\n }\n if (divergeData.isRemoteAhead()) {\n // just override with the model data\n return {\n componentFromFS: component,\n componentFromModel: componentOnLane,\n id,\n mergeResults: null,\n divergeData,\n };\n }\n // we know that localHead and remoteHead are set, so if none of them is ahead they must be equal\n return returnUnmerged(`component ${component.id.toString()} is already merged`, true);\n }\n const baseSnap = divergeData.commonSnapBeforeDiverge as Ref; // must be set when isTrueMerge\n const baseComponent: Version = await modelComponent.loadVersion(baseSnap.toString(), repo);\n const otherComponent: Version = await modelComponent.loadVersion(otherLaneHead.toString(), repo);\n const currentLaneName = localLane?.toLaneId().toString() || 'main';\n const mergeResults = await threeWayMerge({\n consumer,\n otherComponent,\n otherLabel: `${otherLaneHead.toString()} (${otherLaneName})`,\n currentComponent: component,\n currentLabel: `${currentId.version} (${currentLaneName})`,\n baseComponent,\n });\n return { componentFromFS: component, id, mergeResults, divergeData };\n }\n\n private async applyVersion({\n consumer,\n componentFromFS,\n id,\n mergeResults,\n mergeStrategy,\n remoteHead,\n remoteName,\n laneId,\n localLane,\n }: {\n consumer: Consumer;\n componentFromFS: Component | null | undefined;\n id: BitId;\n mergeResults: MergeResultsThreeWay | null | undefined;\n mergeStrategy: MergeStrategy;\n remoteHead: Ref;\n remoteName: string | null;\n laneId: LaneId;\n localLane: Lane | null;\n }): Promise<ApplyVersionResult> {\n let filesStatus = {};\n const unmergedComponent: UnmergedComponent = {\n // @ts-ignore\n id: { name: id.name, scope: id.scope },\n // @ts-ignore\n head: remoteHead,\n // @ts-ignore\n remote: remoteName,\n lane: laneId.name,\n resolved: false, // could be changed later\n };\n id = componentFromFS ? componentFromFS.id : id;\n if (mergeResults && mergeResults.hasConflicts && mergeStrategy === MergeOptions.ours) {\n if (!componentFromFS) throw new Error(`applyVersion expect to get componentFromFS for ${id.toString()}`);\n componentFromFS.files.forEach((file) => {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.unchanged;\n });\n unmergedComponent.resolved = true;\n consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);\n\n return { id, filesStatus };\n }\n const remoteId = id.changeVersion(remoteHead.toString());\n const idToLoad = !mergeResults || mergeStrategy === MergeOptions.theirs ? remoteId : id;\n const componentWithDependencies = await consumer.loadComponentWithDependenciesFromModel(idToLoad);\n if (!id.scope) {\n componentWithDependencies.dependencies = [];\n componentWithDependencies.devDependencies = [];\n }\n const files = componentWithDependencies.component.files;\n files.forEach((file) => {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.updated;\n });\n\n if (mergeResults) {\n // update files according to the merge results\n const { filesStatus: modifiedStatus, modifiedFiles } = applyModifiedVersion(files, mergeResults, mergeStrategy);\n componentWithDependencies.component.files = modifiedFiles;\n filesStatus = { ...filesStatus, ...modifiedStatus };\n }\n const shouldDependenciesSaveAsComponents = await consumer.shouldDependenciesSavedAsComponents([id]);\n componentWithDependencies.component.dependenciesSavedAsComponents =\n shouldDependenciesSaveAsComponents[0].saveDependenciesAsComponents;\n\n const manyComponentsWriter = new ManyComponentsWriter({\n consumer,\n componentsWithDependencies: [componentWithDependencies],\n installNpmPackages: false,\n override: true,\n writeConfig: false, // @todo: should write if config exists before, needs to figure out how to do it.\n verbose: false, // @todo: do we need a flag here?\n writeDists: true, // @todo: do we need a flag here?\n writePackageJson: false,\n });\n await manyComponentsWriter.writeAll();\n\n // if mergeResults, the head snap is going to be updated on a later phase when snapping with two parents\n // otherwise, update the head of the current lane or main\n if (mergeResults) {\n if (mergeResults.hasConflicts && mergeStrategy === MergeOptions.manual) {\n unmergedComponent.resolved = false;\n unmergedComponent.unmergedPaths = mergeResults.modifiedFiles.filter((f) => f.conflict).map((f) => f.filePath);\n } else {\n unmergedComponent.resolved = true;\n }\n consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);\n } else if (localLane) {\n localLane.addComponent({ id, head: remoteHead });\n } else {\n // this is main\n const modelComponent = await consumer.scope.getModelComponent(id);\n modelComponent.setHead(remoteHead);\n // mark it as local, otherwise, when importing this component from a remote, it'll override it.\n modelComponent.markVersionAsLocal(remoteHead.toString());\n consumer.scope.objects.add(modelComponent);\n }\n\n return { id, filesStatus };\n }\n\n private async abortMerge(consumer: Consumer, values: string[]): Promise<ApplyVersionResults> {\n const ids = this.getIdsForUnresolved(consumer, values);\n // @ts-ignore not clear yet what to do with other flags\n const results = await checkoutVersion(consumer, { ids, reset: true });\n ids.forEach((id) => consumer.scope.objects.unmergedComponents.removeComponent(id.name));\n await consumer.scope.objects.unmergedComponents.write();\n return { abortedComponents: results.components };\n }\n\n private async resolveMerge(\n consumer: Consumer,\n values: string[],\n snapMessage: string,\n build: boolean\n ): Promise<ApplyVersionResults> {\n const ids = this.getIdsForUnresolved(consumer, values);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const { snappedComponents } = await this.snapping.snap({\n legacyBitIds: BitIds.fromArray(ids),\n build,\n message: snapMessage,\n });\n return { resolvedComponents: snappedComponents };\n }\n\n private async getAllComponentsStatus(\n bitIds: BitId[],\n laneId: LaneId,\n localLaneObject: Lane | null\n ): Promise<ComponentMergeStatus[]> {\n const tmp = new Tmp(this.consumer.scope);\n try {\n const componentsStatus = await Promise.all(\n bitIds.map(async (bitId) => {\n const remoteScopeName = laneId.isDefault() ? bitId.scope : laneId.scope;\n const remoteLaneId = LaneId.from(laneId.name, remoteScopeName as string);\n const remoteHead = await this.consumer.scope.objects.remoteLanes.getRef(remoteLaneId, bitId);\n const laneIdStr = remoteLaneId.toString();\n if (!remoteHead)\n throw new BitError(`unable to find a remote head of \"${bitId.toStringWithoutVersion()}\" in \"${laneIdStr}\"`);\n return this.getComponentMergeStatus(bitId.changeVersion(remoteHead.toString()), localLaneObject, laneIdStr);\n })\n );\n await tmp.clear();\n return componentsStatus;\n } catch (err: any) {\n await tmp.clear();\n throw err;\n }\n }\n\n private async snapResolvedComponents(\n consumer: Consumer,\n snapMessage: string,\n build: boolean\n ): Promise<null | { snappedComponents: Component[]; autoSnappedResults: AutoTagResult[] }> {\n const resolvedComponents = consumer.scope.objects.unmergedComponents.getResolvedComponents();\n logger.debug(`merge-snaps, snapResolvedComponents, total ${resolvedComponents.length.toString()} components`);\n if (!resolvedComponents.length) return null;\n const ids = BitIds.fromArray(resolvedComponents.map((r) => new BitId(r.id)));\n return this.snapping.snap({\n legacyBitIds: ids,\n build,\n message: snapMessage,\n });\n }\n\n private getIdsForUnresolved(consumer: Consumer, idsStr?: string[]): BitId[] {\n if (idsStr && idsStr.length) {\n const bitIds = idsStr.map((id) => consumer.getParsedId(id));\n bitIds.forEach((id) => {\n const entry = consumer.scope.objects.unmergedComponents.getEntry(id.name);\n if (!entry) {\n throw new GeneralError(`unable to merge-resolve ${id.toString()}, it is not marked as unresolved`);\n }\n });\n return bitIds;\n }\n const unresolvedComponents = consumer.scope.objects.unmergedComponents.getComponents();\n if (!unresolvedComponents.length) throw new GeneralError(`all components are resolved already, nothing to do`);\n return unresolvedComponents.map((u) => new BitId(u.id));\n }\n\n private getComponentsToMerge(consumer: Consumer, ids: string[]): BitId[] {\n if (hasWildcard(ids)) {\n const componentsList = new ComponentsList(consumer);\n return componentsList.listComponentsByIdsWithWildcard(ids);\n }\n return ids.map((id) => consumer.getParsedId(id));\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, SnappingAspect];\n static runtime = MainRuntime;\n static async provider([cli, workspace, snapping]: [CLIMain, Workspace, SnappingMain]) {\n const merging = new MergingMain(workspace, snapping);\n cli.register(new MergeCmd(merging));\n return merging;\n }\n}\n\nMergingAspect.addRuntime(MergingMain);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MergingMain","constructor","workspace","snapping","consumer","merge","values","mergeStrategy","abort","resolve","noSnap","message","build","skipDependencyInstallation","ConsumerNotFound","mergeResults","firstValue","R","head","resolveMerge","abortMerge","BitId","isValidVersion","bitIds","getComponentsToMerge","mergeComponentsFromRemote","version","ids","tail","mergeVersion","onDestroy","snapMessage","currentLaneId","getCurrentLaneId","currentLaneObject","getCurrentLaneObject","allComponentsStatus","getAllComponentsStatus","failedComponents","filter","c","unmergedMessage","unmergedLegitimately","length","failureMsgs","map","failedComponent","chalk","bold","id","toString","red","join","BitError","mergeSnaps","laneId","localLane","componentWithConflict","find","component","hasConflicts","getMergeStrategyInteractive","componentStatus","failureMessage","unchangedLegitimately","succeededComponents","componentsResults","mapSeries","currentComponent","resolvedUnrelated","modelComponent","scope","getModelComponent","updatedLaneId","isDefault","LaneId","from","name","applyVersion","remoteHead","getRef","leftUnresolvedConflicts","install","undefined","dedupe","updateExisting","import","objects","add","persist","unmergedComponents","write","mergeSnapResults","snapResolvedComponents","components","getComponentMergeStatus","otherLaneName","options","returnUnmerged","msg","getModelComponentIfExist","unmerged","getEntry","toStringWithoutVersion","repo","otherLaneHead","existingBitMapId","bitMap","getBitIdIfExist","ignoreVersion","componentOnLane","loadVersion","isRemoved","getCurrentId","idOnLane","getComponent","changeVersion","getHeadAsTagIfExist","currentId","divergeData","getDivergeData","componentFromModel","getCurrentComponent","loadComponent","getConsumerComponent","componentModificationStatus","getComponentStatusById","modified","laneHeadIsDifferentThanCheckedOut","laneHeadLocal","localHead","Ref","Error","err","NoCommonSnap","resolveUnrelated","isDiverged","isLocalAhead","isRemoteAhead","baseSnap","commonSnapBeforeDiverge","baseComponent","otherComponent","currentLaneName","toLaneId","threeWayMerge","otherLabel","currentLabel","filesStatus","unmergedComponent","remote","lane","handleResolveUnrelated","unrelated","addEntry","markAllFilesAsUnchanged","files","forEach","file","pathNormalizeToLinux","relative","FileStatus","unchanged","MergeOptions","ours","addComponent","remoteId","idToLoad","theirs","componentWithDependencies","loadComponentWithDependenciesFromModel","updated","modifiedStatus","modifiedFiles","applyModifiedVersion","manyComponentsWriter","ManyComponentsWriter","componentsWithDependencies","installNpmPackages","override","writeConfig","verbose","writeDists","writePackageJson","writeAll","manual","unmergedPaths","f","conflict","filePath","setHead","markVersionAsLocal","getIdsForUnmerged","results","checkoutVersion","reset","removeComponent","abortedComponents","snappedComponents","snap","legacyBitIds","BitIds","fromArray","resolvedComponents","localLaneObject","tmp","Tmp","componentsStatus","Promise","all","bitId","remoteScopeName","remoteLaneId","remoteLanes","laneIdStr","clear","getComponents","logger","debug","r","idsStr","getParsedId","entry","GeneralError","unresolvedComponents","u","hasWildcard","componentsList","ComponentsList","listComponentsByIdsWithWildcard","provider","cli","merging","register","MergeCmd","CLIAspect","WorkspaceAspect","SnappingAspect","MainRuntime","MergingAspect","addRuntime"],"sources":["merging.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport R from 'ramda';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport ComponentsList from '@teambit/legacy/dist/consumer/component/components-list';\nimport {\n ApplyVersionResults,\n MergeStrategy,\n mergeVersion,\n ApplyVersionResult,\n FailedComponents,\n FileStatus,\n getMergeStrategyInteractive,\n MergeOptions,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';\nimport SnappingAspect, { SnappingMain } from '@teambit/snapping';\nimport hasWildcard from '@teambit/legacy/dist/utils/string/has-wildcard';\nimport mapSeries from 'p-map-series';\nimport { BitId, BitIds } from '@teambit/legacy/dist/bit-id';\nimport { BitError } from '@teambit/bit-error';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport { LaneId } from '@teambit/lane-id';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { AutoTagResult } from '@teambit/legacy/dist/scope/component-ops/auto-tag';\nimport { getDivergeData } from '@teambit/legacy/dist/scope/component-ops/get-diverge-data';\nimport { UnmergedComponent } from '@teambit/legacy/dist/scope/lanes/unmerged-components';\nimport { Lane, Version } from '@teambit/legacy/dist/scope/models';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\nimport chalk from 'chalk';\nimport { Tmp } from '@teambit/legacy/dist/scope/repositories';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport ManyComponentsWriter from '@teambit/legacy/dist/consumer/component-ops/many-components-writer';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component/consumer-component';\nimport checkoutVersion, { applyModifiedVersion } from '@teambit/legacy/dist/consumer/versions-ops/checkout-version';\nimport threeWayMerge, {\n MergeResultsThreeWay,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';\nimport { NoCommonSnap } from '@teambit/legacy/dist/scope/exceptions/no-common-snap';\nimport { DivergeData } from '@teambit/legacy/dist/scope/component-ops/diverge-data';\nimport { MergeCmd } from './merge-cmd';\nimport { MergingAspect } from './merging.aspect';\n\nexport type ComponentMergeStatus = {\n currentComponent?: ConsumerComponent | null;\n componentFromModel?: Version;\n id: BitId;\n unmergedMessage?: string;\n unmergedLegitimately?: boolean; // failed to merge but for a legitimate reason, such as, up-to-date\n mergeResults?: MergeResultsThreeWay | null;\n divergeData?: DivergeData;\n resolvedUnrelated?: MergeStrategy;\n};\n\nexport class MergingMain {\n private consumer: Consumer;\n constructor(private workspace: Workspace, private snapping: SnappingMain) {\n this.consumer = this.workspace?.consumer;\n }\n\n /**\n * merge components according to the \"values\" param.\n * if the first param is a version, then merge the component ids to that version.\n * otherwise, merge from the remote head to the local.\n */\n async merge(\n values: string[],\n mergeStrategy: MergeStrategy,\n abort: boolean,\n resolve: boolean,\n noSnap: boolean,\n message: string,\n build: boolean,\n skipDependencyInstallation: boolean\n ): Promise<ApplyVersionResults> {\n if (!this.workspace) throw new ConsumerNotFound();\n const consumer: Consumer = this.workspace.consumer;\n let mergeResults;\n const firstValue = R.head(values);\n if (resolve) {\n mergeResults = await this.resolveMerge(consumer, values, message, build);\n } else if (abort) {\n mergeResults = await this.abortMerge(consumer, values);\n } else if (!BitId.isValidVersion(firstValue)) {\n const bitIds = this.getComponentsToMerge(consumer, values);\n // @todo: version could be the lane only or remote/lane\n mergeResults = await this.mergeComponentsFromRemote(\n consumer,\n bitIds,\n mergeStrategy,\n noSnap,\n message,\n build,\n skipDependencyInstallation\n );\n } else {\n const version = firstValue;\n const ids = R.tail(values);\n const bitIds = this.getComponentsToMerge(consumer, ids);\n mergeResults = await mergeVersion(consumer, version, bitIds, mergeStrategy);\n }\n await consumer.onDestroy();\n return mergeResults;\n }\n\n /**\n * when user is on main, it merges the remote main components into local.\n * when user is on a lane, it merges the remote lane components into the local lane.\n */\n async mergeComponentsFromRemote(\n consumer: Consumer,\n bitIds: BitId[],\n mergeStrategy: MergeStrategy,\n noSnap: boolean,\n snapMessage: string,\n build: boolean,\n skipDependencyInstallation: boolean\n ): Promise<ApplyVersionResults> {\n const currentLaneId = consumer.getCurrentLaneId();\n const currentLaneObject = await consumer.getCurrentLaneObject();\n const allComponentsStatus = await this.getAllComponentsStatus(bitIds, currentLaneId, currentLaneObject);\n const failedComponents = allComponentsStatus.filter((c) => c.unmergedMessage && !c.unmergedLegitimately);\n if (failedComponents.length) {\n const failureMsgs = failedComponents\n .map(\n (failedComponent) =>\n `${chalk.bold(failedComponent.id.toString())} - ${chalk.red(failedComponent.unmergedMessage as string)}`\n )\n .join('\\n');\n throw new BitError(`unable to merge due to the following failures:\\n${failureMsgs}`);\n }\n\n return this.mergeSnaps({\n mergeStrategy,\n allComponentsStatus,\n laneId: currentLaneId,\n localLane: currentLaneObject,\n noSnap,\n snapMessage,\n build,\n skipDependencyInstallation,\n });\n }\n\n /**\n * merge multiple components according to the \"allComponentsStatus\".\n */\n async mergeSnaps({\n mergeStrategy,\n allComponentsStatus,\n laneId,\n localLane,\n noSnap,\n snapMessage,\n build,\n skipDependencyInstallation,\n }: {\n mergeStrategy: MergeStrategy;\n allComponentsStatus: ComponentMergeStatus[];\n laneId: LaneId;\n localLane: Lane | null;\n noSnap: boolean;\n snapMessage: string;\n build: boolean;\n skipDependencyInstallation?: boolean;\n }): Promise<ApplyVersionResults> {\n const consumer = this.workspace.consumer;\n const componentWithConflict = allComponentsStatus.find(\n (component) => component.mergeResults && component.mergeResults.hasConflicts\n );\n if (componentWithConflict && !mergeStrategy) {\n mergeStrategy = await getMergeStrategyInteractive();\n }\n const failedComponents: FailedComponents[] = allComponentsStatus\n .filter((componentStatus) => componentStatus.unmergedMessage)\n .map((componentStatus) => ({\n id: componentStatus.id,\n failureMessage: componentStatus.unmergedMessage as string,\n unchangedLegitimately: componentStatus.unmergedLegitimately,\n }));\n const succeededComponents = allComponentsStatus.filter((componentStatus) => !componentStatus.unmergedMessage);\n // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,\n // which can be an issue when some components are also dependencies of others\n const componentsResults = await mapSeries(\n succeededComponents,\n async ({ currentComponent, id, mergeResults, resolvedUnrelated }) => {\n const modelComponent = await consumer.scope.getModelComponent(id);\n const updatedLaneId = laneId.isDefault() ? LaneId.from(laneId.name, id.scope as string) : laneId;\n return this.applyVersion({\n currentComponent,\n id,\n mergeResults,\n mergeStrategy,\n remoteHead: modelComponent.getRef(id.version as string) as Ref,\n laneId: updatedLaneId,\n localLane,\n resolvedUnrelated,\n });\n }\n );\n\n const leftUnresolvedConflicts = componentWithConflict && mergeStrategy === 'manual';\n\n if (!skipDependencyInstallation && !leftUnresolvedConflicts) {\n await this.workspace.install(undefined, {\n dedupe: true,\n updateExisting: false,\n import: false,\n });\n }\n\n if (localLane) consumer.scope.objects.add(localLane);\n\n await consumer.scope.objects.persist(); // persist anyway, if localLane is null it should save all main heads\n\n await consumer.scope.objects.unmergedComponents.write();\n\n // if one of the component has conflict, don't snap-merge. otherwise, some of the components would be snap-merged\n // and some not. besides the fact that it could by mistake tag dependent, it's a confusing state. better not snap.\n const mergeSnapResults =\n noSnap || leftUnresolvedConflicts ? null : await this.snapResolvedComponents(consumer, snapMessage, build);\n\n return {\n components: componentsResults,\n failedComponents,\n mergeSnapResults,\n leftUnresolvedConflicts,\n };\n }\n\n /**\n * this function gets called from two different commands:\n * 1. \"bit merge <ids...>\", when merging a component from a remote to the local.\n * in this case, the remote and local are on the same lane or both on main.\n * 2. \"bit lane merge\", when merging from one lane to another.\n * @param id\n * @param localLane\n * @param otherLaneName\n * @param existingOnWorkspaceOnly\n * @returns\n */\n async getComponentMergeStatus(\n id: BitId, // the id.version is the version we want to merge to the current component\n localLane: Lane | null, // currently checked out lane. if on main, then it's null.\n otherLaneName: string, // the lane name we want to merged to our lane. (can be also \"main\").\n options?: { resolveUnrelated?: MergeStrategy }\n ): Promise<ComponentMergeStatus> {\n const consumer = this.workspace.consumer;\n const componentStatus: ComponentMergeStatus = { id };\n const returnUnmerged = (msg: string, unmergedLegitimately = false) => {\n componentStatus.unmergedMessage = msg;\n componentStatus.unmergedLegitimately = unmergedLegitimately;\n return componentStatus;\n };\n const modelComponent = await consumer.scope.getModelComponentIfExist(id);\n if (!modelComponent) {\n return returnUnmerged(\n `component ${id.toString()} is on the lane/main but its objects were not found, please re-import the lane`\n );\n }\n const unmerged = consumer.scope.objects.unmergedComponents.getEntry(id.name);\n if (unmerged) {\n return returnUnmerged(\n `component ${id.toStringWithoutVersion()} is in during-merge state a previous merge, please snap/tag it first (or use bit merge --resolve/--abort)`\n );\n }\n const repo = consumer.scope.objects;\n const version = id.version as string;\n const otherLaneHead = modelComponent.getRef(version);\n const existingBitMapId = consumer.bitMap.getBitIdIfExist(id, { ignoreVersion: true });\n const componentOnLane: Version = await modelComponent.loadVersion(version, consumer.scope.objects);\n if (componentOnLane.isRemoved()) {\n return returnUnmerged(`component has been removed`, true);\n }\n const getCurrentId = () => {\n if (existingBitMapId) return existingBitMapId;\n if (localLane) {\n const idOnLane = localLane.getComponent(id);\n if (!idOnLane) return null;\n return idOnLane.id.changeVersion(idOnLane.head.toString());\n }\n // it's on main\n const head = modelComponent.getHeadAsTagIfExist();\n if (head) {\n return id.changeVersion(head);\n }\n return null;\n };\n const currentId = getCurrentId();\n if (!currentId) {\n const divergeData = await getDivergeData(repo, modelComponent, otherLaneHead, null, false);\n return { currentComponent: null, componentFromModel: componentOnLane, id, mergeResults: null, divergeData };\n }\n const getCurrentComponent = () => {\n if (existingBitMapId) return consumer.loadComponent(existingBitMapId);\n return consumer.scope.getConsumerComponent(currentId);\n };\n const currentComponent = await getCurrentComponent();\n const componentModificationStatus = await consumer.getComponentStatusById(currentComponent.id);\n if (componentModificationStatus.modified) {\n return returnUnmerged(\n `unable to merge ${id.toStringWithoutVersion()}, the component is modified, please snap/tag it first`\n );\n }\n const laneHeadIsDifferentThanCheckedOut =\n localLane && existingBitMapId?.version && modelComponent.laneHeadLocal?.toString() !== existingBitMapId?.version;\n const localHead = laneHeadIsDifferentThanCheckedOut ? Ref.from(existingBitMapId.version) : null;\n\n if (!otherLaneHead) {\n throw new Error(`merging: unable finding a hash for the version ${version} of ${id.toString()}`);\n }\n const divergeData = await getDivergeData(repo, modelComponent, otherLaneHead, localHead, false);\n if (divergeData.err) {\n if (divergeData.err instanceof NoCommonSnap && options?.resolveUnrelated) {\n if (options?.resolveUnrelated === 'theirs') {\n // just override with the model data\n return {\n currentComponent,\n componentFromModel: componentOnLane,\n id,\n mergeResults: null,\n divergeData,\n resolvedUnrelated: 'theirs',\n };\n }\n if (options?.resolveUnrelated === 'ours') {\n return {\n currentComponent,\n id,\n mergeResults: null,\n divergeData,\n resolvedUnrelated: 'ours',\n };\n }\n throw new Error(\n `unsupported strategy \"${options?.resolveUnrelated}\" of resolve-unrelated. supported strategies are: [ours, theirs]`\n );\n }\n return returnUnmerged(\n `unable to traverse ${currentComponent.id.toString()} history. error: ${divergeData.err.message}`\n );\n }\n if (!divergeData.isDiverged()) {\n if (divergeData.isLocalAhead()) {\n // do nothing!\n return returnUnmerged(`component ${currentComponent.id.toString()} is ahead, nothing to merge`, true);\n }\n if (divergeData.isRemoteAhead()) {\n // just override with the model data\n return {\n currentComponent,\n componentFromModel: componentOnLane,\n id,\n mergeResults: null,\n divergeData,\n };\n }\n // we know that localHead and remoteHead are set, so if none of them is ahead they must be equal\n return returnUnmerged(`component ${currentComponent.id.toString()} is already merged`, true);\n }\n const baseSnap = divergeData.commonSnapBeforeDiverge as Ref; // must be set when isTrueMerge\n const baseComponent: Version = await modelComponent.loadVersion(baseSnap.toString(), repo);\n const otherComponent: Version = await modelComponent.loadVersion(otherLaneHead.toString(), repo);\n const currentLaneName = localLane?.toLaneId().toString() || 'main';\n const mergeResults = await threeWayMerge({\n consumer,\n otherComponent,\n otherLabel: `${otherLaneHead.toString()} (${otherLaneName})`,\n currentComponent,\n currentLabel: `${currentId.version} (${currentLaneName})`,\n baseComponent,\n });\n return { currentComponent, id, mergeResults, divergeData };\n }\n\n private async applyVersion({\n currentComponent,\n id,\n mergeResults,\n mergeStrategy,\n remoteHead,\n laneId,\n localLane,\n resolvedUnrelated,\n }: {\n currentComponent: ConsumerComponent | null | undefined;\n id: BitId;\n mergeResults: MergeResultsThreeWay | null | undefined;\n mergeStrategy: MergeStrategy;\n remoteHead: Ref;\n laneId: LaneId;\n localLane: Lane | null;\n resolvedUnrelated?: MergeStrategy;\n }): Promise<ApplyVersionResult> {\n const consumer = this.workspace.consumer;\n let filesStatus = {};\n const unmergedComponent: UnmergedComponent = {\n // @ts-ignore\n id: { name: id.name, scope: id.scope },\n head: remoteHead,\n remote: laneId.scope, // @todo: remove. it has been deprecated around 0.0.832\n lane: laneId.name, // @todo: remove. it has been deprecated around 0.0.832\n laneId,\n };\n id = currentComponent ? currentComponent.id : id;\n\n const modelComponent = await consumer.scope.getModelComponent(id);\n const handleResolveUnrelated = () => {\n if (!currentComponent) throw new Error('currentComponent must be defined when resolvedUnrelated');\n if (!localLane) throw new Error('localLane must be defined when resolvedUnrelated');\n const head = modelComponent.getRef(currentComponent.id.version as string);\n if (!head) throw new Error(`unable to get the head for resolved-unrelated ${id.toString()}`);\n unmergedComponent.laneId = localLane.toLaneId();\n unmergedComponent.head = head;\n unmergedComponent.unrelated = true;\n consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);\n return { id, filesStatus };\n };\n\n const markAllFilesAsUnchanged = () => {\n if (!currentComponent) throw new Error(`applyVersion expect to get currentComponent for ${id.toString()}`);\n currentComponent.files.forEach((file) => {\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.unchanged;\n });\n };\n if (mergeResults && mergeResults.hasConflicts && mergeStrategy === MergeOptions.ours) {\n markAllFilesAsUnchanged();\n consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);\n return { id, filesStatus };\n }\n if (resolvedUnrelated && resolvedUnrelated === 'ours') {\n markAllFilesAsUnchanged();\n localLane?.addComponent({ id, head: remoteHead });\n return handleResolveUnrelated();\n }\n const remoteId = id.changeVersion(remoteHead.toString());\n const idToLoad = !mergeResults || mergeStrategy === MergeOptions.theirs ? remoteId : id;\n const componentWithDependencies = await consumer.loadComponentWithDependenciesFromModel(idToLoad);\n const files = componentWithDependencies.component.files;\n files.forEach((file) => {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.updated;\n });\n\n if (mergeResults) {\n // update files according to the merge results\n const { filesStatus: modifiedStatus, modifiedFiles } = applyModifiedVersion(files, mergeResults, mergeStrategy);\n componentWithDependencies.component.files = modifiedFiles;\n filesStatus = { ...filesStatus, ...modifiedStatus };\n }\n\n const manyComponentsWriter = new ManyComponentsWriter({\n consumer,\n componentsWithDependencies: [componentWithDependencies],\n installNpmPackages: false,\n override: true,\n writeConfig: false, // @todo: should write if config exists before, needs to figure out how to do it.\n verbose: false, // @todo: do we need a flag here?\n writeDists: true, // @todo: do we need a flag here?\n writePackageJson: false,\n });\n await manyComponentsWriter.writeAll();\n\n // if mergeResults, the head snap is going to be updated on a later phase when snapping with two parents\n // otherwise, update the head of the current lane or main\n if (mergeResults) {\n if (mergeResults.hasConflicts && mergeStrategy === MergeOptions.manual) {\n unmergedComponent.unmergedPaths = mergeResults.modifiedFiles.filter((f) => f.conflict).map((f) => f.filePath);\n }\n consumer.scope.objects.unmergedComponents.addEntry(unmergedComponent);\n } else if (localLane) {\n localLane.addComponent({ id, head: remoteHead });\n if (resolvedUnrelated) {\n // must be \"theirs\"\n return handleResolveUnrelated();\n }\n } else {\n // this is main\n modelComponent.setHead(remoteHead);\n // mark it as local, otherwise, when importing this component from a remote, it'll override it.\n modelComponent.markVersionAsLocal(remoteHead.toString());\n consumer.scope.objects.add(modelComponent);\n }\n\n return { id, filesStatus };\n }\n\n private async abortMerge(consumer: Consumer, values: string[]): Promise<ApplyVersionResults> {\n const ids = this.getIdsForUnmerged(consumer, values);\n // @ts-ignore not clear yet what to do with other flags\n const results = await checkoutVersion(consumer, { ids, reset: true });\n ids.forEach((id) => consumer.scope.objects.unmergedComponents.removeComponent(id.name));\n await consumer.scope.objects.unmergedComponents.write();\n return { abortedComponents: results.components };\n }\n\n private async resolveMerge(\n consumer: Consumer,\n values: string[],\n snapMessage: string,\n build: boolean\n ): Promise<ApplyVersionResults> {\n const ids = this.getIdsForUnmerged(consumer, values);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const { snappedComponents } = await this.snapping.snap({\n legacyBitIds: BitIds.fromArray(ids),\n build,\n message: snapMessage,\n });\n return { resolvedComponents: snappedComponents };\n }\n\n private async getAllComponentsStatus(\n bitIds: BitId[],\n laneId: LaneId,\n localLaneObject: Lane | null\n ): Promise<ComponentMergeStatus[]> {\n const tmp = new Tmp(this.consumer.scope);\n try {\n const componentsStatus = await Promise.all(\n bitIds.map(async (bitId) => {\n const remoteScopeName = laneId.isDefault() ? bitId.scope : laneId.scope;\n const remoteLaneId = LaneId.from(laneId.name, remoteScopeName as string);\n const remoteHead = await this.consumer.scope.objects.remoteLanes.getRef(remoteLaneId, bitId);\n const laneIdStr = remoteLaneId.toString();\n if (!remoteHead)\n throw new BitError(`unable to find a remote head of \"${bitId.toStringWithoutVersion()}\" in \"${laneIdStr}\"`);\n return this.getComponentMergeStatus(bitId.changeVersion(remoteHead.toString()), localLaneObject, laneIdStr);\n })\n );\n await tmp.clear();\n return componentsStatus;\n } catch (err: any) {\n await tmp.clear();\n throw err;\n }\n }\n\n private async snapResolvedComponents(\n consumer: Consumer,\n snapMessage: string,\n build: boolean\n ): Promise<null | { snappedComponents: ConsumerComponent[]; autoSnappedResults: AutoTagResult[] }> {\n const unmergedComponents = consumer.scope.objects.unmergedComponents.getComponents();\n logger.debug(`merge-snaps, snapResolvedComponents, total ${unmergedComponents.length.toString()} components`);\n if (!unmergedComponents.length) return null;\n const ids = BitIds.fromArray(unmergedComponents.map((r) => new BitId(r.id)));\n return this.snapping.snap({\n legacyBitIds: ids,\n build,\n message: snapMessage,\n });\n }\n\n private getIdsForUnmerged(consumer: Consumer, idsStr?: string[]): BitId[] {\n if (idsStr && idsStr.length) {\n const bitIds = idsStr.map((id) => consumer.getParsedId(id));\n bitIds.forEach((id) => {\n const entry = consumer.scope.objects.unmergedComponents.getEntry(id.name);\n if (!entry) {\n throw new GeneralError(`unable to merge-resolve ${id.toString()}, it is not marked as unresolved`);\n }\n });\n return bitIds;\n }\n const unresolvedComponents = consumer.scope.objects.unmergedComponents.getComponents();\n if (!unresolvedComponents.length) throw new GeneralError(`all components are resolved already, nothing to do`);\n return unresolvedComponents.map((u) => new BitId(u.id));\n }\n\n private getComponentsToMerge(consumer: Consumer, ids: string[]): BitId[] {\n if (hasWildcard(ids)) {\n const componentsList = new ComponentsList(consumer);\n return componentsList.listComponentsByIdsWithWildcard(ids);\n }\n return ids.map((id) => consumer.getParsedId(id));\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, SnappingAspect];\n static runtime = MainRuntime;\n static async provider([cli, workspace, snapping]: [CLIMain, Workspace, SnappingMain]) {\n const merging = new MergingMain(workspace, snapping);\n cli.register(new MergeCmd(merging));\n return merging;\n }\n}\n\nMergingAspect.addRuntime(MergingMain);\n"],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/merging",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.148",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/component/merging",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.component",
|
|
8
8
|
"name": "merging",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.148"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "2.4.2",
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
"@babel/runtime": "7.12.18",
|
|
17
17
|
"core-js": "^3.0.0",
|
|
18
18
|
"@teambit/harmony": "0.3.3",
|
|
19
|
-
"@teambit/bit-error": "0.0.
|
|
20
|
-
"@teambit/cli": "0.0.
|
|
21
|
-
"@teambit/lane-id": "0.0.
|
|
22
|
-
"@teambit/snapping": "0.0.
|
|
23
|
-
"@teambit/workspace": "0.0.
|
|
19
|
+
"@teambit/bit-error": "0.0.396",
|
|
20
|
+
"@teambit/cli": "0.0.558",
|
|
21
|
+
"@teambit/lane-id": "0.0.77",
|
|
22
|
+
"@teambit/snapping": "0.0.148",
|
|
23
|
+
"@teambit/workspace": "0.0.833"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/lodash": "4.14.165",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@types/node": "12.20.4"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"@teambit/legacy": "1.0.
|
|
35
|
+
"@teambit/legacy": "1.0.341",
|
|
36
36
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
37
37
|
"react": "^16.8.0 || ^17.0.0"
|
|
38
38
|
},
|
|
@@ -54,8 +54,6 @@
|
|
|
54
54
|
"react",
|
|
55
55
|
"react-components",
|
|
56
56
|
"angular",
|
|
57
|
-
"angular-components"
|
|
58
|
-
"vue",
|
|
59
|
-
"vue-components"
|
|
57
|
+
"angular-components"
|
|
60
58
|
]
|
|
61
59
|
}
|
|
File without changes
|
|
Binary file
|