@teambit/git 0.0.29 → 0.0.31
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/git.main.runtime.d.ts +13 -2
- package/dist/git.main.runtime.js +13 -5
- package/dist/git.main.runtime.js.map +1 -1
- package/package-tar/teambit-git-0.0.31.tgz +0 -0
- package/package.json +5 -5
- package/package-tar/teambit-git-0.0.29.tgz +0 -0
- /package/dist/{preview-1690946168324.js → preview-1691523857630.js} +0 -0
@@ -3,9 +3,20 @@ import { Workspace } from '@teambit/workspace';
|
|
3
3
|
declare type SetGitMergeDriverOpts = {
|
4
4
|
global?: boolean;
|
5
5
|
};
|
6
|
+
export interface GitExtWorkspaceConfig {
|
7
|
+
mergeStrategy: 'ours' | 'theirs' | 'manual';
|
8
|
+
}
|
6
9
|
export declare class GitMain {
|
7
10
|
private workspace;
|
8
|
-
|
11
|
+
/**
|
12
|
+
* Git extension configuration.
|
13
|
+
*/
|
14
|
+
readonly config: GitExtWorkspaceConfig;
|
15
|
+
constructor(workspace: Workspace,
|
16
|
+
/**
|
17
|
+
* Git extension configuration.
|
18
|
+
*/
|
19
|
+
config: GitExtWorkspaceConfig);
|
9
20
|
mergeBitmaps(ancestor: string, current: string, other: string): Promise<string>;
|
10
21
|
setGitMergeDriver(opts: SetGitMergeDriverOpts): Promise<boolean>;
|
11
22
|
private setGitConfig;
|
@@ -15,6 +26,6 @@ export declare class GitMain {
|
|
15
26
|
static slots: never[];
|
16
27
|
static dependencies: import("@teambit/harmony").Aspect[];
|
17
28
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
18
|
-
static provider([cli, workspace]: [CLIMain, Workspace]): Promise<GitMain>;
|
29
|
+
static provider([cli, workspace]: [CLIMain, Workspace], config: GitExtWorkspaceConfig): Promise<GitMain>;
|
19
30
|
}
|
20
31
|
export default GitMain;
|
package/dist/git.main.runtime.js
CHANGED
@@ -96,18 +96,26 @@ const GIT_NAME_KEY = `${GIT_BASE_KEY}.name`;
|
|
96
96
|
const GIT_DRIVER_KEY = `${GIT_BASE_KEY}.driver`;
|
97
97
|
const GIT_NAME_VALUE = 'A custom merge driver used to resolve conflicts in .bitmap files';
|
98
98
|
// const binName = process.argv[1];
|
99
|
-
const GIT_DRIVER_VALUE = '
|
99
|
+
const GIT_DRIVER_VALUE = 'bd git merge-bitmaps %O %A %B';
|
100
100
|
const GIT_ATTRIBUTES = '.bitmap merge=bitmap-driver';
|
101
101
|
class GitMain {
|
102
|
-
constructor(workspace
|
102
|
+
constructor(workspace,
|
103
|
+
/**
|
104
|
+
* Git extension configuration.
|
105
|
+
*/
|
106
|
+
config) {
|
103
107
|
this.workspace = workspace;
|
108
|
+
this.config = config;
|
104
109
|
}
|
105
110
|
async mergeBitmaps(ancestor, current, other) {
|
106
111
|
const encoding = 'utf-8';
|
107
112
|
// const ancestorContent = this.stripBom(fs.readFileSync(ancestor, encoding));
|
108
113
|
const currentContent = this.stripBom(_fsExtra().default.readFileSync(current, encoding));
|
109
114
|
const otherContent = this.stripBom(_fsExtra().default.readFileSync(other, encoding));
|
110
|
-
const
|
115
|
+
const opts = {
|
116
|
+
mergeStrategy: this.config.mergeStrategy || 'manual'
|
117
|
+
};
|
118
|
+
const merged = this.workspace.bitMap.mergeBitmaps(currentContent, otherContent, opts);
|
111
119
|
await _fsExtra().default.outputFile(current, merged);
|
112
120
|
return merged;
|
113
121
|
}
|
@@ -178,8 +186,8 @@ class GitMain {
|
|
178
186
|
stripBom(str) {
|
179
187
|
return str[0] === '\uFEFF' ? str.slice(1) : str;
|
180
188
|
}
|
181
|
-
static async provider([cli, workspace]) {
|
182
|
-
const gitMain = new GitMain(workspace);
|
189
|
+
static async provider([cli, workspace], config) {
|
190
|
+
const gitMain = new GitMain(workspace, config);
|
183
191
|
const gitCmd = new (_git2().GitCmd)();
|
184
192
|
gitCmd.commands = [new (_setGitMergeDriver().SetGitMergeDriverCmd)(gitMain), new (_mergeBitmaps().MergeBitmapsCmd)(gitMain)];
|
185
193
|
cli.register(gitCmd);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_bitError","_os","_path","_gitconfig","_cli","_workspace","_git","_mergeBitmaps","_setGitMergeDriver","_git2","GIT_BASE_KEY","GIT_NAME_KEY","GIT_DRIVER_KEY","GIT_NAME_VALUE","GIT_DRIVER_VALUE","GIT_ATTRIBUTES","GitMain","constructor","workspace","mergeBitmaps","ancestor","current","other","encoding","currentContent","stripBom","fs","readFileSync","otherContent","merged","bitMap","outputFile","setGitMergeDriver","opts","setGitConfig","setGitAttributes","isGit","pathExists","global","BitError","location","gitVal","gitconfig","get","_unused","set","attributesPath","getGitAttributesPath","fileExist","writeFile","gitAttributes","readFile","includes","appendFile","fromConfig","xdgConfigHome","process","env","XDG_CONFIG_HOME","join","homedir","str","slice","provider","cli","gitMain","gitCmd","GitCmd","commands","SetGitMergeDriverCmd","MergeBitmapsCmd","register","registerGroup","exports","_defineProperty2","default","CLIAspect","WorkspaceAspect","MainRuntime","GitAspect","addRuntime","_default"],"sources":["git.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { BitError } from '@teambit/bit-error';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport gitconfig from 'gitconfig';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { GitAspect } from './git.aspect';\nimport { MergeBitmapsCmd } from './merge-bitmaps.cmd';\nimport { SetGitMergeDriverCmd } from './set-git-merge-driver.cmd';\nimport { GitCmd } from './git.cmd';\n\ntype SetGitMergeDriverOpts = {\n global?: boolean;\n};\n\nconst GIT_BASE_KEY = 'merge.bitmap-driver';\nconst GIT_NAME_KEY = `${GIT_BASE_KEY}.name`;\nconst GIT_DRIVER_KEY = `${GIT_BASE_KEY}.driver`;\n\nconst GIT_NAME_VALUE = 'A custom merge driver used to resolve conflicts in .bitmap files';\n// const binName = process.argv[1];\nconst GIT_DRIVER_VALUE = 'bit git merge-bitmaps %O %A %B';\n\nconst GIT_ATTRIBUTES = '.bitmap merge=bitmap-driver';\n\nexport class GitMain {\n constructor(private workspace: Workspace) {}\n\n async mergeBitmaps(ancestor: string, current: string, other: string) {\n const encoding = 'utf-8';\n // const ancestorContent = this.stripBom(fs.readFileSync(ancestor, encoding));\n const currentContent = this.stripBom(fs.readFileSync(current, encoding));\n const otherContent = this.stripBom(fs.readFileSync(other, encoding));\n const merged = this.workspace.bitMap.mergeBitmaps(currentContent, otherContent);\n await fs.outputFile(current, merged);\n return merged;\n }\n\n async setGitMergeDriver(opts: SetGitMergeDriverOpts) {\n await this.setGitConfig(opts);\n await this.setGitAttributes(opts);\n return true;\n }\n\n private async setGitConfig(opts: SetGitMergeDriverOpts) {\n const isGit = await fs.pathExists('.git');\n if (!isGit && !opts.global) {\n throw new BitError('This is not a git repository');\n }\n const location = opts.global ? 'global' : 'local';\n let gitVal;\n try {\n gitVal = await gitconfig.get(GIT_NAME_KEY, { location });\n } catch {\n // do nothing, it just means that there is no config yet which is fine\n }\n if (gitVal) {\n return; // already set\n }\n await gitconfig.set(GIT_NAME_KEY, GIT_NAME_VALUE, { location });\n await gitconfig.set(GIT_DRIVER_KEY, GIT_DRIVER_VALUE, { location });\n }\n\n private async setGitAttributes(opts: SetGitMergeDriverOpts) {\n const attributesPath = await this.getGitAttributesPath(opts.global);\n const isGit = await fs.pathExists('.git');\n if (!isGit && !opts.global) {\n throw new BitError('This is not a git repository');\n }\n const fileExist = await fs.pathExists(attributesPath);\n if (!fileExist) {\n await fs.writeFile(attributesPath, GIT_ATTRIBUTES);\n } else {\n const gitAttributes = await fs.readFile(attributesPath, 'utf8');\n if (gitAttributes.includes(GIT_ATTRIBUTES)) {\n return; // already set\n }\n await fs.appendFile(attributesPath, `\\n${GIT_ATTRIBUTES}`);\n }\n }\n\n private async getGitAttributesPath(global = false) {\n const fromConfig = await gitconfig.get('core.attributesFile', { location: global ? 'global' : 'local' });\n if (fromConfig) {\n return fromConfig;\n }\n if (!global) {\n return '.gitattributes';\n }\n const xdgConfigHome = process.env.XDG_CONFIG_HOME;\n if (xdgConfigHome) {\n return join(xdgConfigHome, 'git', 'attributes');\n }\n return join(homedir(), '.config', 'git', 'attributes');\n }\n\n private stripBom(str) {\n return str[0] === '\\uFEFF' ? str.slice(1) : str;\n }\n\n static slots = [];\n // define your aspect dependencies here.\n // in case you need to use another aspect API.\n static dependencies = [CLIAspect, WorkspaceAspect];\n\n static runtime = MainRuntime;\n\n static async provider([cli, workspace]: [CLIMain, Workspace]) {\n const gitMain = new GitMain(workspace);\n const gitCmd = new GitCmd();\n gitCmd.commands = [new SetGitMergeDriverCmd(gitMain), new MergeBitmapsCmd(gitMain)];\n cli.register(gitCmd);\n cli.registerGroup('git', 'Git');\n return gitMain;\n }\n}\n\nGitAspect.addRuntime(GitMain);\n\nexport default GitMain;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,IAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,GAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,MAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,KAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,WAAA;EAAA,MAAAN,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAI,UAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,KAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,IAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,WAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,UAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,KAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,IAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,cAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,aAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,mBAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,kBAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,MAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,KAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,MAAMa,YAAY,GAAG,qBAAqB;AAC1C,MAAMC,YAAY,GAAI,GAAED,YAAa,OAAM;AAC3C,MAAME,cAAc,GAAI,GAAEF,YAAa,SAAQ;AAE/C,MAAMG,cAAc,GAAG,kEAAkE;AACzF;AACA,MAAMC,gBAAgB,GAAG,gCAAgC;AAEzD,MAAMC,cAAc,GAAG,6BAA6B;AAE7C,MAAMC,OAAO,CAAC;EACnBC,WAAWA,CAASC,SAAoB,EAAE;IAAA,KAAtBA,SAAoB,GAApBA,SAAoB;EAAG;EAE3C,MAAMC,YAAYA,CAACC,QAAgB,EAAEC,OAAe,EAAEC,KAAa,EAAE;IACnE,MAAMC,QAAQ,GAAG,OAAO;IACxB;IACA,MAAMC,cAAc,GAAG,IAAI,CAACC,QAAQ,CAACC,kBAAE,CAACC,YAAY,CAACN,OAAO,EAAEE,QAAQ,CAAC,CAAC;IACxE,MAAMK,YAAY,GAAG,IAAI,CAACH,QAAQ,CAACC,kBAAE,CAACC,YAAY,CAACL,KAAK,EAAEC,QAAQ,CAAC,CAAC;IACpE,MAAMM,MAAM,GAAG,IAAI,CAACX,SAAS,CAACY,MAAM,CAACX,YAAY,CAACK,cAAc,EAAEI,YAAY,CAAC;IAC/E,MAAMF,kBAAE,CAACK,UAAU,CAACV,OAAO,EAAEQ,MAAM,CAAC;IACpC,OAAOA,MAAM;EACf;EAEA,MAAMG,iBAAiBA,CAACC,IAA2B,EAAE;IACnD,MAAM,IAAI,CAACC,YAAY,CAACD,IAAI,CAAC;IAC7B,MAAM,IAAI,CAACE,gBAAgB,CAACF,IAAI,CAAC;IACjC,OAAO,IAAI;EACb;EAEA,MAAcC,YAAYA,CAACD,IAA2B,EAAE;IACtD,MAAMG,KAAK,GAAG,MAAMV,kBAAE,CAACW,UAAU,CAAC,MAAM,CAAC;IACzC,IAAI,CAACD,KAAK,IAAI,CAACH,IAAI,CAACK,MAAM,EAAE;MAC1B,MAAM,KAAIC,oBAAQ,EAAC,8BAA8B,CAAC;IACpD;IACA,MAAMC,QAAQ,GAAGP,IAAI,CAACK,MAAM,GAAG,QAAQ,GAAG,OAAO;IACjD,IAAIG,MAAM;IACV,IAAI;MACFA,MAAM,GAAG,MAAMC,oBAAS,CAACC,GAAG,CAAChC,YAAY,EAAE;QAAE6B;MAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,OAAAI,OAAA,EAAM;MACN;IAAA;IAEF,IAAIH,MAAM,EAAE;MACV,OAAO,CAAC;IACV;;IACA,MAAMC,oBAAS,CAACG,GAAG,CAAClC,YAAY,EAAEE,cAAc,EAAE;MAAE2B;IAAS,CAAC,CAAC;IAC/D,MAAME,oBAAS,CAACG,GAAG,CAACjC,cAAc,EAAEE,gBAAgB,EAAE;MAAE0B;IAAS,CAAC,CAAC;EACrE;EAEA,MAAcL,gBAAgBA,CAACF,IAA2B,EAAE;IAC1D,MAAMa,cAAc,GAAG,MAAM,IAAI,CAACC,oBAAoB,CAACd,IAAI,CAACK,MAAM,CAAC;IACnE,MAAMF,KAAK,GAAG,MAAMV,kBAAE,CAACW,UAAU,CAAC,MAAM,CAAC;IACzC,IAAI,CAACD,KAAK,IAAI,CAACH,IAAI,CAACK,MAAM,EAAE;MAC1B,MAAM,KAAIC,oBAAQ,EAAC,8BAA8B,CAAC;IACpD;IACA,MAAMS,SAAS,GAAG,MAAMtB,kBAAE,CAACW,UAAU,CAACS,cAAc,CAAC;IACrD,IAAI,CAACE,SAAS,EAAE;MACd,MAAMtB,kBAAE,CAACuB,SAAS,CAACH,cAAc,EAAE/B,cAAc,CAAC;IACpD,CAAC,MAAM;MACL,MAAMmC,aAAa,GAAG,MAAMxB,kBAAE,CAACyB,QAAQ,CAACL,cAAc,EAAE,MAAM,CAAC;MAC/D,IAAII,aAAa,CAACE,QAAQ,CAACrC,cAAc,CAAC,EAAE;QAC1C,OAAO,CAAC;MACV;;MACA,MAAMW,kBAAE,CAAC2B,UAAU,CAACP,cAAc,EAAG,KAAI/B,cAAe,EAAC,CAAC;IAC5D;EACF;EAEA,MAAcgC,oBAAoBA,CAACT,MAAM,GAAG,KAAK,EAAE;IACjD,MAAMgB,UAAU,GAAG,MAAMZ,oBAAS,CAACC,GAAG,CAAC,qBAAqB,EAAE;MAAEH,QAAQ,EAAEF,MAAM,GAAG,QAAQ,GAAG;IAAQ,CAAC,CAAC;IACxG,IAAIgB,UAAU,EAAE;MACd,OAAOA,UAAU;IACnB;IACA,IAAI,CAAChB,MAAM,EAAE;MACX,OAAO,gBAAgB;IACzB;IACA,MAAMiB,aAAa,GAAGC,OAAO,CAACC,GAAG,CAACC,eAAe;IACjD,IAAIH,aAAa,EAAE;MACjB,OAAO,IAAAI,YAAI,EAACJ,aAAa,EAAE,KAAK,EAAE,YAAY,CAAC;IACjD;IACA,OAAO,IAAAI,YAAI,EAAC,IAAAC,aAAO,EAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;EACxD;EAEQnC,QAAQA,CAACoC,GAAG,EAAE;IACpB,OAAOA,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAGA,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,GAAGD,GAAG;EACjD;EASA,aAAaE,QAAQA,CAAC,CAACC,GAAG,EAAE9C,SAAS,CAAuB,EAAE;IAC5D,MAAM+C,OAAO,GAAG,IAAIjD,OAAO,CAACE,SAAS,CAAC;IACtC,MAAMgD,MAAM,GAAG,KAAIC,cAAM,EAAC,CAAC;IAC3BD,MAAM,CAACE,QAAQ,GAAG,CAAC,KAAIC,yCAAoB,EAACJ,OAAO,CAAC,EAAE,KAAIK,+BAAe,EAACL,OAAO,CAAC,CAAC;IACnFD,GAAG,CAACO,QAAQ,CAACL,MAAM,CAAC;IACpBF,GAAG,CAACQ,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;IAC/B,OAAOP,OAAO;EAChB;AACF;AAACQ,OAAA,CAAAzD,OAAA,GAAAA,OAAA;AAAA,IAAA0D,gBAAA,GAAAC,OAAA,EA1FY3D,OAAO,WA2EH,EAAE;AACjB;AACA;AAAA,IAAA0D,gBAAA,GAAAC,OAAA,EA7EW3D,OAAO,kBA8EI,CAAC4D,gBAAS,EAAEC,4BAAe,CAAC;AAAA,IAAAH,gBAAA,GAAAC,OAAA,EA9EvC3D,OAAO,aAgFD8D,kBAAW;AAY9BC,gBAAS,CAACC,UAAU,CAAChE,OAAO,CAAC;AAAC,IAAAiE,QAAA,GAEfjE,OAAO;AAAAyD,OAAA,CAAAE,OAAA,GAAAM,QAAA"}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_bitError","_os","_path","_gitconfig","_cli","_workspace","_git","_mergeBitmaps","_setGitMergeDriver","_git2","GIT_BASE_KEY","GIT_NAME_KEY","GIT_DRIVER_KEY","GIT_NAME_VALUE","GIT_DRIVER_VALUE","GIT_ATTRIBUTES","GitMain","constructor","workspace","config","mergeBitmaps","ancestor","current","other","encoding","currentContent","stripBom","fs","readFileSync","otherContent","opts","mergeStrategy","merged","bitMap","outputFile","setGitMergeDriver","setGitConfig","setGitAttributes","isGit","pathExists","global","BitError","location","gitVal","gitconfig","get","_unused","set","attributesPath","getGitAttributesPath","fileExist","writeFile","gitAttributes","readFile","includes","appendFile","fromConfig","xdgConfigHome","process","env","XDG_CONFIG_HOME","join","homedir","str","slice","provider","cli","gitMain","gitCmd","GitCmd","commands","SetGitMergeDriverCmd","MergeBitmapsCmd","register","registerGroup","exports","_defineProperty2","default","CLIAspect","WorkspaceAspect","MainRuntime","GitAspect","addRuntime","_default"],"sources":["git.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { BitError } from '@teambit/bit-error';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport gitconfig from 'gitconfig';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, Workspace, BitmapMergeOptions } from '@teambit/workspace';\nimport { GitAspect } from './git.aspect';\nimport { MergeBitmapsCmd } from './merge-bitmaps.cmd';\nimport { SetGitMergeDriverCmd } from './set-git-merge-driver.cmd';\nimport { GitCmd } from './git.cmd';\n\ntype SetGitMergeDriverOpts = {\n global?: boolean;\n};\n\nconst GIT_BASE_KEY = 'merge.bitmap-driver';\nconst GIT_NAME_KEY = `${GIT_BASE_KEY}.name`;\nconst GIT_DRIVER_KEY = `${GIT_BASE_KEY}.driver`;\n\nconst GIT_NAME_VALUE = 'A custom merge driver used to resolve conflicts in .bitmap files';\n// const binName = process.argv[1];\nconst GIT_DRIVER_VALUE = 'bd git merge-bitmaps %O %A %B';\n\nconst GIT_ATTRIBUTES = '.bitmap merge=bitmap-driver';\n\nexport interface GitExtWorkspaceConfig {\n mergeStrategy: 'ours' | 'theirs' | 'manual';\n}\nexport class GitMain {\n constructor(\n private workspace: Workspace,\n /**\n * Git extension configuration.\n */\n readonly config: GitExtWorkspaceConfig\n ) {}\n\n async mergeBitmaps(ancestor: string, current: string, other: string) {\n const encoding = 'utf-8';\n // const ancestorContent = this.stripBom(fs.readFileSync(ancestor, encoding));\n const currentContent = this.stripBom(fs.readFileSync(current, encoding));\n const otherContent = this.stripBom(fs.readFileSync(other, encoding));\n const opts: BitmapMergeOptions = {\n mergeStrategy: this.config.mergeStrategy || 'manual',\n };\n const merged = this.workspace.bitMap.mergeBitmaps(currentContent, otherContent, opts);\n await fs.outputFile(current, merged);\n return merged;\n }\n\n async setGitMergeDriver(opts: SetGitMergeDriverOpts) {\n await this.setGitConfig(opts);\n await this.setGitAttributes(opts);\n return true;\n }\n\n private async setGitConfig(opts: SetGitMergeDriverOpts) {\n const isGit = await fs.pathExists('.git');\n if (!isGit && !opts.global) {\n throw new BitError('This is not a git repository');\n }\n const location = opts.global ? 'global' : 'local';\n let gitVal;\n try {\n gitVal = await gitconfig.get(GIT_NAME_KEY, { location });\n } catch {\n // do nothing, it just means that there is no config yet which is fine\n }\n if (gitVal) {\n return; // already set\n }\n await gitconfig.set(GIT_NAME_KEY, GIT_NAME_VALUE, { location });\n await gitconfig.set(GIT_DRIVER_KEY, GIT_DRIVER_VALUE, { location });\n }\n\n private async setGitAttributes(opts: SetGitMergeDriverOpts) {\n const attributesPath = await this.getGitAttributesPath(opts.global);\n const isGit = await fs.pathExists('.git');\n if (!isGit && !opts.global) {\n throw new BitError('This is not a git repository');\n }\n const fileExist = await fs.pathExists(attributesPath);\n if (!fileExist) {\n await fs.writeFile(attributesPath, GIT_ATTRIBUTES);\n } else {\n const gitAttributes = await fs.readFile(attributesPath, 'utf8');\n if (gitAttributes.includes(GIT_ATTRIBUTES)) {\n return; // already set\n }\n await fs.appendFile(attributesPath, `\\n${GIT_ATTRIBUTES}`);\n }\n }\n\n private async getGitAttributesPath(global = false) {\n const fromConfig = await gitconfig.get('core.attributesFile', { location: global ? 'global' : 'local' });\n if (fromConfig) {\n return fromConfig;\n }\n if (!global) {\n return '.gitattributes';\n }\n const xdgConfigHome = process.env.XDG_CONFIG_HOME;\n if (xdgConfigHome) {\n return join(xdgConfigHome, 'git', 'attributes');\n }\n return join(homedir(), '.config', 'git', 'attributes');\n }\n\n private stripBom(str) {\n return str[0] === '\\uFEFF' ? str.slice(1) : str;\n }\n\n static slots = [];\n // define your aspect dependencies here.\n // in case you need to use another aspect API.\n static dependencies = [CLIAspect, WorkspaceAspect];\n\n static runtime = MainRuntime;\n\n static async provider([cli, workspace]: [CLIMain, Workspace], config: GitExtWorkspaceConfig) {\n const gitMain = new GitMain(workspace, config);\n const gitCmd = new GitCmd();\n gitCmd.commands = [new SetGitMergeDriverCmd(gitMain), new MergeBitmapsCmd(gitMain)];\n cli.register(gitCmd);\n cli.registerGroup('git', 'Git');\n return gitMain;\n }\n}\n\nGitAspect.addRuntime(GitMain);\n\nexport default GitMain;\n"],"mappings":"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"}
|
Binary file
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/git",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.31",
|
4
4
|
"homepage": "https://bit.cloud/teambit/git/git",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.git",
|
8
8
|
"name": "git",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.31"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"chalk": "2.4.2",
|
@@ -15,9 +15,9 @@
|
|
15
15
|
"core-js": "^3.0.0",
|
16
16
|
"@babel/runtime": "7.20.0",
|
17
17
|
"@teambit/harmony": "0.4.6",
|
18
|
-
"@teambit/cli": "0.0.
|
18
|
+
"@teambit/cli": "0.0.753",
|
19
19
|
"@teambit/bit-error": "0.0.402",
|
20
|
-
"@teambit/workspace": "0.0.
|
20
|
+
"@teambit/workspace": "0.0.1126"
|
21
21
|
},
|
22
22
|
"devDependencies": {
|
23
23
|
"@types/fs-extra": "9.0.7",
|
@@ -29,7 +29,7 @@
|
|
29
29
|
"@types/testing-library__jest-dom": "5.9.5"
|
30
30
|
},
|
31
31
|
"peerDependencies": {
|
32
|
-
"@teambit/legacy": "1.0.
|
32
|
+
"@teambit/legacy": "1.0.535",
|
33
33
|
"react": "^16.8.0 || ^17.0.0",
|
34
34
|
"react-dom": "^16.8.0 || ^17.0.0"
|
35
35
|
},
|
Binary file
|
File without changes
|