sf-git-merge-driver 1.0.1-dev-70.16864618044-1 → 1.0.1-dev-70.16880045046-1
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/README.md +3 -3
- package/lib/driver/MergeDriver.d.ts +0 -2
- package/lib/driver/MergeDriver.js +3 -13
- package/lib/driver/MergeDriver.js.map +1 -1
- package/lib/utils/mergeUtils.d.ts +2 -0
- package/lib/utils/mergeUtils.js +12 -0
- package/lib/utils/mergeUtils.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ EXAMPLES
|
|
|
48
48
|
$ sf git merge driver install
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
_See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.
|
|
51
|
+
_See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16880045046-1/src/commands/git/merge/driver/install.ts)_
|
|
52
52
|
|
|
53
53
|
## `sf git merge driver run`
|
|
54
54
|
|
|
@@ -92,7 +92,7 @@ EXAMPLES
|
|
|
92
92
|
- output-file is the path to the file where the merged content will be written
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
_See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.
|
|
95
|
+
_See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16880045046-1/src/commands/git/merge/driver/run.ts)_
|
|
96
96
|
|
|
97
97
|
## `sf git merge driver uninstall`
|
|
98
98
|
|
|
@@ -119,7 +119,7 @@ EXAMPLES
|
|
|
119
119
|
$ sf git merge driver uninstall
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
_See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.
|
|
122
|
+
_See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16880045046-1/src/commands/git/merge/driver/uninstall.ts)_
|
|
123
123
|
<!-- commandsstop -->
|
|
124
124
|
|
|
125
125
|
## How It Works
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { normalize } from 'node:path';
|
|
3
3
|
import { XmlMerger } from '../merger/XmlMerger.js';
|
|
4
|
+
import { detectEol, normalizeEol } from '../utils/mergeUtils.js';
|
|
4
5
|
export class MergeDriver {
|
|
5
|
-
static detectEol(text) {
|
|
6
|
-
if (text.includes('\r\n'))
|
|
7
|
-
return '\r\n';
|
|
8
|
-
return '\n';
|
|
9
|
-
}
|
|
10
|
-
static applyEol(text, eol) {
|
|
11
|
-
// XML Merge Driver default to \n
|
|
12
|
-
if (eol === '\r\n')
|
|
13
|
-
return text.split(/\r\n|\n/).join(eol);
|
|
14
|
-
return text;
|
|
15
|
-
}
|
|
16
6
|
async mergeFiles(ancestorFile, ourFile, theirFile) {
|
|
17
7
|
// Read all three versions
|
|
18
8
|
const [ancestorContent, ourContent, theirContent] = await Promise.all([ancestorFile, ourFile, theirFile]
|
|
@@ -20,8 +10,8 @@ export class MergeDriver {
|
|
|
20
10
|
.map(path => readFile(path, 'utf8')));
|
|
21
11
|
const xmlMerger = new XmlMerger();
|
|
22
12
|
const mergedContent = xmlMerger.mergeThreeWay(ancestorContent, ourContent, theirContent);
|
|
23
|
-
const targetEol =
|
|
24
|
-
const outputWithEol =
|
|
13
|
+
const targetEol = detectEol(ourContent);
|
|
14
|
+
const outputWithEol = normalizeEol(mergedContent.output, targetEol);
|
|
25
15
|
process.stderr.write(`[SF-MERGE-DEBUG] wrote to ourFile: ${normalize(ourFile)}\n`);
|
|
26
16
|
process.stderr.write(`[SF-MERGE-DEBUG] content: ${outputWithEol}\n`);
|
|
27
17
|
process.stderr.write(`[SF-MERGE-DEBUG] hasConflict: ${mergedContent.hasConflict}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MergeDriver.js","sourceRoot":"","sources":["../../src/driver/MergeDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"MergeDriver.js","sourceRoot":"","sources":["../../src/driver/MergeDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAEhE,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,UAAU,CACd,YAAoB,EACpB,OAAe,EACf,SAAiB;QAEjB,0BAA0B;QAC1B,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CACnE,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACvC,CAAA;QAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAC3C,eAAe,EACf,UAAU,EACV,YAAY,CACb,CAAA;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAEnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC7D,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,aAAa,IAAI,CAAC,CAAA;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iCAAiC,aAAa,CAAC,WAAW,IAAI,CAC/D,CAAA;QAED,2CAA2C;QAC3C,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAA;QAClD,OAAO,aAAa,CAAC,WAAW,CAAA;IAClC,CAAC;CACF"}
|
|
@@ -2,3 +2,5 @@ import type { JsonArray, JsonObject, JsonValue } from '../types/jsonTypes.js';
|
|
|
2
2
|
export declare const isObject: (ancestor: JsonValue | undefined | null, local: JsonValue | undefined | null, other: JsonValue | undefined | null) => boolean;
|
|
3
3
|
export declare const ensureArray: (value: JsonValue) => JsonArray;
|
|
4
4
|
export declare const getUniqueSortedProps: (...objects: (JsonObject | JsonArray)[]) => string[];
|
|
5
|
+
export declare const detectEol: (text: string) => string;
|
|
6
|
+
export declare const normalizeEol: (text: string, eol: string) => string;
|
package/lib/utils/mergeUtils.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { castArray, isNil } from 'lodash-es';
|
|
2
|
+
const LF_OR_CRLF_REGEX = /\r?\n/g;
|
|
3
|
+
const CRLF_ONLY_REGEX = /\r\n/g;
|
|
4
|
+
const CRLF = '\r\n';
|
|
5
|
+
const LF = '\n';
|
|
2
6
|
export const isObject = (ancestor, local, other) => typeof [ancestor, other, local].find(ele => !isNil(ele)) === 'object';
|
|
3
7
|
export const ensureArray = (value) => isNil(value) ? [] : castArray(value);
|
|
4
8
|
export const getUniqueSortedProps = (...objects) => Array.from(new Set([...objects].map(Object.keys).flat())).sort();
|
|
9
|
+
export const detectEol = (text) => text.includes(CRLF) ? CRLF : LF;
|
|
10
|
+
export const normalizeEol = (text, eol) => {
|
|
11
|
+
if (!eol || !text) {
|
|
12
|
+
return text;
|
|
13
|
+
}
|
|
14
|
+
const regex = eol === CRLF ? LF_OR_CRLF_REGEX : CRLF_ONLY_REGEX;
|
|
15
|
+
return text.replace(regex, eol);
|
|
16
|
+
};
|
|
5
17
|
//# sourceMappingURL=mergeUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeUtils.js","sourceRoot":"","sources":["../../src/utils/mergeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAG5C,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,QAAsC,EACtC,KAAmC,EACnC,KAAmC,EAC1B,EAAE,CACX,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAA;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAa,EAAE,CACzD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,SAAS,CAAC,KAAK,CAAe,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAG,OAAmC,EAC5B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"mergeUtils.js","sourceRoot":"","sources":["../../src/utils/mergeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAG5C,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACjC,MAAM,eAAe,GAAG,OAAO,CAAA;AAC/B,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,MAAM,EAAE,GAAG,IAAI,CAAA;AAEf,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,QAAsC,EACtC,KAAmC,EACnC,KAAmC,EAC1B,EAAE,CACX,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAA;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAa,EAAE,CACzD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,SAAS,CAAC,KAAK,CAAe,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAG,OAAmC,EAC5B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAE/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE;IAChE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAA;IAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC,CAAA"}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sf-git-merge-driver",
|
|
3
|
-
"version": "1.0.1-dev-70.
|
|
3
|
+
"version": "1.0.1-dev-70.16880045046-1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "sf-git-merge-driver",
|
|
9
|
-
"version": "1.0.1-dev-70.
|
|
9
|
+
"version": "1.0.1-dev-70.16880045046-1",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@oclif/core": "^4.5.2",
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sf-git-merge-driver",
|
|
3
3
|
"description": "git remote add origin git@github.com:scolladon/sf-git-merge-driver.git",
|
|
4
|
-
"version": "1.0.1-dev-70.
|
|
4
|
+
"version": "1.0.1-dev-70.16880045046-1",
|
|
5
5
|
"exports": "./lib/driver/MergeDriver.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"author": "Sébastien Colladon (colladonsebastien@gmail.com)",
|