From 1a76ab87ba499892a8625ed4eb26ddcb1392b0e7 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Mon, 3 Jul 2023 16:44:40 +0200 Subject: [PATCH] fix git --- apps/remixdesktop/src/plugins/isoGitPlugin.ts | 71 ++++++++++++------- apps/remixdesktop/src/tools/git.ts | 15 +++- 2 files changed, 58 insertions(+), 28 deletions(-) diff --git a/apps/remixdesktop/src/plugins/isoGitPlugin.ts b/apps/remixdesktop/src/plugins/isoGitPlugin.ts index cd07c70bce..1fb239e0f6 100644 --- a/apps/remixdesktop/src/plugins/isoGitPlugin.ts +++ b/apps/remixdesktop/src/plugins/isoGitPlugin.ts @@ -46,7 +46,7 @@ const clientProfile: Profile = { name: 'isogit', displayName: 'isogit', description: 'isogit plugin', - methods: ['init', 'localStorageUsed', 'version', 'addremote', 'delremote', 'remotes', 'fetch', 'clone', 'export', 'import', 'status', 'log', 'commit', 'add', 'remove', 'reset', 'rm', 'lsfiles', 'readblob', 'resolveref', 'branches', 'branch', 'checkout', 'currentbranch', 'push', 'pin', 'pull', 'pinList', 'unPin', 'setIpfsConfig', 'zip', 'setItem', 'getItem', 'openFolder'] + methods: ['init', 'localStorageUsed', 'version', 'addremote', 'delremote', 'remotes', 'fetch', 'clone', 'export', 'import', 'status', 'log', 'commit', 'add', 'remove', 'reset', 'rm', 'lsfiles', 'readblob', 'resolveref', 'branches', 'branch', 'checkout', 'currentbranch', 'push', 'pin', 'pull', 'pinList', 'unPin', 'setIpfsConfig', 'zip', 'setItem', 'getItem', 'openFolder'] } class IsoGitPluginClient extends ElectronBasePluginClient { @@ -76,11 +76,11 @@ class IsoGitPluginClient extends ElectronBasePluginClient { async status(cmd: any) { - if(this.workingDir === ''){ + if (this.workingDir === '') { return [] } - if(this.gitIsInstalled){ + if (this.gitIsInstalled) { const status = await gitProxy.status(this.workingDir) return status } @@ -103,7 +103,7 @@ class IsoGitPluginClient extends ElectronBasePluginClient { } */ - if(this.workingDir === ''){ + if (this.workingDir === '') { return [] } @@ -134,7 +134,7 @@ class IsoGitPluginClient extends ElectronBasePluginClient { return rm } - async reset(cmd: any){ + async reset(cmd: any) { const reset = await git.resetIndex({ ...await this.getGitConfig(), @@ -143,7 +143,7 @@ class IsoGitPluginClient extends ElectronBasePluginClient { return reset } - + async commit(cmd: any) { @@ -173,7 +173,7 @@ class IsoGitPluginClient extends ElectronBasePluginClient { } async lsfiles(cmd: any) { - + const lsfiles = await git.listFiles({ ...await this.getGitConfig(), ...cmd @@ -214,37 +214,56 @@ class IsoGitPluginClient extends ElectronBasePluginClient { async push(cmd: any) { - console.log('PUSH', cmd) - const push = await git.push({ - ...await this.getGitConfig(), - ...cmd, - ...parseInput(cmd.input) - }) - return push + if (this.gitIsInstalled) { + await gitProxy.push(this.workingDir, cmd.remote, cmd.ref, cmd.remoteRef, cmd.force) + + } else { + + const push = await git.push({ + ...await this.getGitConfig(), + ...cmd, + ...parseInput(cmd.input) + }) + return push + } + } async pull(cmd: any) { - const pull = await git.pull({ - ...await this.getGitConfig(), - ...cmd, - ...parseInput(cmd.input) - }) + if (this.gitIsInstalled) { + await gitProxy.pull(this.workingDir, cmd.remote, cmd.ref, cmd.remoteRef) + + } else { + + const pull = await git.pull({ + ...await this.getGitConfig(), + ...cmd, + ...parseInput(cmd.input) + }) + + return pull - return pull + } } async fetch(cmd: any) { - const fetch = await git.fetch({ - ...await this.getGitConfig(), - ...cmd, - ...parseInput(cmd.input) - }) + if (this.gitIsInstalled) { + await gitProxy.fetch(this.workingDir, cmd.remote, cmd.remoteRef) + + } else { - return fetch + const fetch = await git.fetch({ + ...await this.getGitConfig(), + ...cmd, + ...parseInput(cmd.input) + }) + + return fetch + } } async clone(cmd: any) { diff --git a/apps/remixdesktop/src/tools/git.ts b/apps/remixdesktop/src/tools/git.ts index fb8a6177ad..20a38de3e9 100644 --- a/apps/remixdesktop/src/tools/git.ts +++ b/apps/remixdesktop/src/tools/git.ts @@ -41,10 +41,21 @@ export const gitProxy = { clone: async (url: string, path: string) => { const { stdout, stderr } = await execAsync(`git clone ${url} ${path}`); - console.log('stdout:', stdout); - console.log('stderr:', stderr); }, + async push(path: string, remote: string, src: string, branch: string, force: boolean = false) { + const { stdout, stderr } = await execAsync(`git push ${force? ' -f':'' } ${remote} ${src}:${branch}`, { cwd: path }); + }, + + async pull(path: string, remote: string, src: string, branch: string) { + const { stdout, stderr } = await execAsync(`git pull ${remote} ${src}:${branch}`, { cwd: path }); + }, + + async fetch(path: string, remote: string, branch: string) { + const { stdout, stderr } = await execAsync(`git fetch ${remote} ${branch}`, { cwd: path }); + }, + + status: async (path: string) => { const result = await execAsync('git status --porcelain -uall', { cwd: path }) //console.log('git status --porcelain -uall', result.stdout)