git-sync-js 1.1.0 → 2.0.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.
Files changed (42) hide show
  1. package/README.md +38 -16
  2. package/dist/src/clone.d.ts +3 -3
  3. package/dist/src/clone.d.ts.map +1 -1
  4. package/dist/src/clone.js +15 -11
  5. package/dist/src/clone.js.map +1 -1
  6. package/dist/src/commitAndSync.d.ts +8 -8
  7. package/dist/src/commitAndSync.d.ts.map +1 -1
  8. package/dist/src/commitAndSync.js +70 -66
  9. package/dist/src/commitAndSync.js.map +1 -1
  10. package/dist/src/credential.d.ts.map +1 -1
  11. package/dist/src/credential.js +2 -2
  12. package/dist/src/credential.js.map +1 -1
  13. package/dist/src/errors.d.ts +3 -3
  14. package/dist/src/errors.d.ts.map +1 -1
  15. package/dist/src/errors.js +2 -1
  16. package/dist/src/errors.js.map +1 -1
  17. package/dist/src/forcePull.d.ts +22 -0
  18. package/dist/src/forcePull.d.ts.map +1 -0
  19. package/dist/src/forcePull.js +58 -0
  20. package/dist/src/forcePull.js.map +1 -0
  21. package/dist/src/index.d.ts +5 -4
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +5 -4
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/init.js.map +1 -1
  26. package/dist/src/initGit.d.ts +7 -7
  27. package/dist/src/initGit.d.ts.map +1 -1
  28. package/dist/src/initGit.js +2 -2
  29. package/dist/src/initGit.js.map +1 -1
  30. package/dist/src/inspect.d.ts +2 -2
  31. package/dist/src/inspect.d.ts.map +1 -1
  32. package/dist/src/inspect.js +24 -10
  33. package/dist/src/inspect.js.map +1 -1
  34. package/dist/src/interface.d.ts +53 -31
  35. package/dist/src/interface.d.ts.map +1 -1
  36. package/dist/src/interface.js +54 -25
  37. package/dist/src/interface.js.map +1 -1
  38. package/dist/src/sync.d.ts +5 -0
  39. package/dist/src/sync.d.ts.map +1 -1
  40. package/dist/src/sync.js +16 -2
  41. package/dist/src/sync.js.map +1 -1
  42. package/package.json +35 -39
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # git-sync-js
2
2
 
3
+ [Documentation Site](https://tiddly-gittly.github.io/git-sync-js/)
4
+
3
5
  JS implementation for [Git-Sync](https://github.com/simonthum/git-sync), a handy script that backup your notes in a git repo to the remote git services.
4
6
 
5
- Used by [TiddlyGit-Desktop](https://github.com/tiddly-gittly/TiddlyGit-Desktop), refactor out to be a npm package.
7
+ Used by OpenSource free bi-link second brain note taking & knowledge map app [TidGi-Desktop](https://github.com/tiddly-gittly/TidGi-Desktop), refactor out to be a npm package.
6
8
 
7
9
  ```shell
8
10
  npm i git-sync-js
@@ -31,11 +33,13 @@ import {
31
33
  } from 'git-sync-js';
32
34
  ```
33
35
 
34
- You can see [TiddlyGit Desktop's usage](https://github.com/tiddly-gittly/TiddlyGit-Desktop/blob/37fd560badd7a63cced8ece7c68d6d384b6612a0/src/services/git/index.ts) for full example.
36
+ See [api docs](./docs/api/) for full list of them.
37
+
38
+ You can see [TidGi-Desktop's usage](https://github.com/tiddly-gittly/TidGi-Desktop/blob/9e73bbf96deb5a4c085bbf9c56dc38e62efdd550/src/services/git/gitWorker.ts) for full example.
35
39
 
36
40
  ### initGit
37
41
 
38
- Initialize a new `.git` on a folder. If set `syncImmediately` to `true`, it will push local git to remote immediately after init, you should provide `userInfo.accessToken` and `remoteUrl`, otherwise they are optional.
42
+ [initGit()](./docs/api/modules/initGit.md) Initialize a new `.git` on a folder. If set `syncImmediately` to `true`, it will push local git to remote immediately after init, you should provide `userInfo.accessToken` and `remoteUrl`, otherwise they are optional.
39
43
 
40
44
  ```ts
41
45
  try {
@@ -45,10 +49,16 @@ try {
45
49
  syncImmediately: isSyncedWiki,
46
50
  userInfo: { ...defaultGitInfo, ...userInfo },
47
51
  logger: {
48
- log: (message: string, context: ILoggerContext): unknown => logger.info(message, { callerFunction: 'initWikiGit', ...context }),
49
- warn: (message: string, context: ILoggerContext): unknown => logger.warn(message, { callerFunction: 'initWikiGit', ...context }),
52
+ log: (message: string, context: ILoggerContext): unknown =>
53
+ logger.info(message, { callerFunction: 'initWikiGit', ...context }),
54
+ warn: (message: string, context: ILoggerContext): unknown =>
55
+ logger.warn(message, { callerFunction: 'initWikiGit', ...context }),
50
56
  info: (message: GitStep, context: ILoggerContext): void => {
51
- logger.notice(this.translateMessage(message), { handler: WikiChannel.syncProgress, callerFunction: 'initWikiGit', ...context });
57
+ logger.notice(this.translateMessage(message), {
58
+ handler: WikiChannel.syncProgress,
59
+ callerFunction: 'initWikiGit',
60
+ ...context,
61
+ });
52
62
  },
53
63
  },
54
64
  });
@@ -59,7 +69,7 @@ try {
59
69
 
60
70
  ### commitAndSync
61
71
 
62
- Core feature of git-sync, commit all unstaged files, and try rebase on remote, and push to the remote.
72
+ [commitAndSync()](./docs/api/modules/commitAndSync.md) is the Core feature of git-sync, commit all unstaged files, and try rebase on remote, and push to the remote.
63
73
 
64
74
  ```ts
65
75
  try {
@@ -68,10 +78,16 @@ try {
68
78
  remoteUrl,
69
79
  userInfo: { ...defaultGitInfo, ...userInfo },
70
80
  logger: {
71
- log: (message: string, context: ILoggerContext): unknown => logger.info(message, { callerFunction: 'commitAndSync', ...context }),
72
- warn: (message: string, context: ILoggerContext): unknown => logger.warn(message, { callerFunction: 'commitAndSync', ...context }),
81
+ log: (message: string, context: ILoggerContext): unknown =>
82
+ logger.info(message, { callerFunction: 'commitAndSync', ...context }),
83
+ warn: (message: string, context: ILoggerContext): unknown =>
84
+ logger.warn(message, { callerFunction: 'commitAndSync', ...context }),
73
85
  info: (message: GitStep, context: ILoggerContext): void => {
74
- logger.notice(this.translateMessage(message), { handler: WikiChannel.syncProgress, callerFunction: 'commitAndSync', ...context });
86
+ logger.notice(this.translateMessage(message), {
87
+ handler: WikiChannel.syncProgress,
88
+ callerFunction: 'commitAndSync',
89
+ ...context,
90
+ });
75
91
  },
76
92
  },
77
93
  filesToIgnore,
@@ -83,7 +99,7 @@ try {
83
99
 
84
100
  ### clone
85
101
 
86
- Clone a remote repo to a local location.
102
+ [clone()](./docs/api/modules/clone.md) will Clone a remote repo to a local location.
87
103
 
88
104
  ```ts
89
105
  try {
@@ -92,10 +108,16 @@ try {
92
108
  remoteUrl,
93
109
  userInfo: { ...defaultGitInfo, ...userInfo },
94
110
  logger: {
95
- log: (message: string, context: ILoggerContext): unknown => logger.info(message, { callerFunction: 'clone', ...context }),
96
- warn: (message: string, context: ILoggerContext): unknown => logger.warn(message, { callerFunction: 'clone', ...context }),
111
+ log: (message: string, context: ILoggerContext): unknown =>
112
+ logger.info(message, { callerFunction: 'clone', ...context }),
113
+ warn: (message: string, context: ILoggerContext): unknown =>
114
+ logger.warn(message, { callerFunction: 'clone', ...context }),
97
115
  info: (message: GitStep, context: ILoggerContext): void => {
98
- logger.notice(this.translateMessage(message), { handler: WikiChannel.syncProgress, callerFunction: 'clone', ...context });
116
+ logger.notice(this.translateMessage(message), {
117
+ handler: WikiChannel.syncProgress,
118
+ callerFunction: 'clone',
119
+ ...context,
120
+ });
99
121
  },
100
122
  },
101
123
  });
@@ -161,7 +183,7 @@ Check if dir has `.git`.
161
183
 
162
184
  ## Steps
163
185
 
164
- These are git sync steps enum, that will log to logger when steps happened. You can write switch case on them in your custom logger, and translate them into user readable info.
186
+ These is a git sync steps enum [GitStep](./docs/api/enums/interface.GitStep.md), that will log to logger when steps happened. You can write switch case on them in your custom logger, and translate them into user readable info.
165
187
 
166
188
  ```shell
167
189
  StartGitInitialization
@@ -196,7 +218,7 @@ CantSyncInSpecialGitStateAutoFixSucceed
196
218
 
197
219
  ## Errors
198
220
 
199
- These are the errors throw on git sync gets into fatal situations. You can try catch on major functions to get these errors, and `instanceof` these error to translate their message for user to read and report.
221
+ These are the errors like [AssumeSyncError](./docs/api/classes/errors.AssumeSyncError.md) that will throw on git sync gets into fatal situations. You can try catch on major functions to get these errors, and `instanceof` these error to translate their message for user to read and report.
200
222
 
201
223
  ```shell
202
224
  AssumeSyncError
@@ -1,13 +1,13 @@
1
- import { IGitUserInfos, ILogger } from './interface';
2
1
  import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
2
+ import { IGitUserInfos, ILogger } from './interface';
3
3
  export declare function clone(options: {
4
+ defaultGitInfo?: typeof defaultDefaultGitInfo;
4
5
  /** wiki folder path, can be relative, should exist before function call */
5
6
  dir: string;
7
+ logger?: ILogger;
6
8
  /** the storage service url we are sync to, for example your github repo url */
7
9
  remoteUrl?: string;
8
10
  /** user info used in the commit message */
9
11
  userInfo?: IGitUserInfos;
10
- logger?: ILogger;
11
- defaultGitInfo?: typeof defaultDefaultGitInfo;
12
12
  }): Promise<void>;
13
13
  //# sourceMappingURL=clone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/clone.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,wBAAsB,KAAK,CAAC,OAAO,EAAE;IACnC,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC/C,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDhB"}
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/clone.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAI3E,OAAO,EAAW,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,wBAAsB,KAAK,CAAC,OAAO,EAAE;IACnC,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAC9C,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDhB"}
package/dist/src/clone.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { GitProcess } from 'dugite';
2
2
  import { truncate } from 'lodash';
3
- import { credentialOn, credentialOff } from './credential';
4
- import { SyncParameterMissingError, GitPullPushError } from './errors';
5
- import { getRemoteName } from './inspect';
6
- import { GitStep } from './interface';
3
+ import { credentialOff, credentialOn } from './credential';
7
4
  import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
5
+ import { GitPullPushError, SyncParameterMissingError } from './errors';
8
6
  import { initGitWithBranch } from './init';
7
+ import { getRemoteName } from './inspect';
8
+ import { GitStep } from './interface';
9
9
  export async function clone(options) {
10
10
  const { dir, remoteUrl, userInfo, logger, defaultGitInfo = defaultDefaultGitInfo } = options;
11
11
  const { gitUserName, branch } = userInfo ?? defaultGitInfo;
@@ -42,14 +42,18 @@ export async function clone(options) {
42
42
  logDebug(`Successfully Running git init for clone in dir ${dir}`, GitStep.PrepareCloneOnlineWiki);
43
43
  logProgress(GitStep.StartConfiguringGithubRemoteRepository);
44
44
  await credentialOn(dir, remoteUrl, gitUserName, accessToken, remoteName);
45
- logProgress(GitStep.StartFetchingFromGithubRemote);
46
- const { stderr: pullStdError, exitCode } = await GitProcess.exec(['pull', remoteName, `${branch}:${branch}`], dir);
47
- await credentialOff(dir, remoteName, remoteUrl);
48
- if (exitCode !== 0) {
49
- throw new GitPullPushError(options, pullStdError);
45
+ try {
46
+ logProgress(GitStep.StartFetchingFromGithubRemote);
47
+ const { stderr: pullStdError, exitCode } = await GitProcess.exec(['pull', remoteName, `${branch}:${branch}`], dir);
48
+ if (exitCode === 0) {
49
+ logProgress(GitStep.SynchronizationFinish);
50
+ }
51
+ else {
52
+ throw new GitPullPushError(options, pullStdError);
53
+ }
50
54
  }
51
- else {
52
- logProgress(GitStep.SynchronizationFinish);
55
+ finally {
56
+ await credentialOff(dir, remoteName, remoteUrl);
53
57
  }
54
58
  }
55
59
  //# sourceMappingURL=clone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/clone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/clone.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
- import { IGitUserInfos, ILogger } from './interface';
2
1
  import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
2
+ import { IGitUserInfos, ILogger } from './interface';
3
3
  export interface ICommitAndSyncOptions {
4
+ /** the commit message */
5
+ commitMessage?: string;
6
+ commitOnly?: boolean;
7
+ defaultGitInfo?: typeof defaultDefaultGitInfo;
4
8
  /** wiki folder path, can be relative */
5
9
  dir: string;
6
- commitOnly?: boolean;
10
+ /** if you want to use a dynamic .gitignore, you can passing an array contains filepaths that want to ignore */
11
+ filesToIgnore?: string[];
12
+ logger?: ILogger;
7
13
  /** the storage service url we are sync to, for example your github repo url
8
14
  * When empty, and commitOnly===true, it means we just want commit, without sync
9
15
  */
@@ -12,12 +18,6 @@ export interface ICommitAndSyncOptions {
12
18
  * When empty, and commitOnly===true, it means we just want commit, without sync
13
19
  */
14
20
  userInfo?: IGitUserInfos;
15
- /** the commit message */
16
- commitMessage?: string;
17
- logger?: ILogger;
18
- defaultGitInfo?: typeof defaultDefaultGitInfo;
19
- /** if you want to use a dynamic .gitignore, you can passing an array contains filepaths that want to ignore */
20
- filesToIgnore?: string[];
21
21
  }
22
22
  /**
23
23
  * `git add .` + `git commit` + `git rebase` or something that can sync bi-directional
@@ -1 +1 @@
1
- {"version":3,"file":"commitAndSync.d.ts","sourceRoot":"","sources":["../../src/commitAndSync.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAC9C,+GAA+G;IAC/G,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AACD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JjF"}
1
+ {"version":3,"file":"commitAndSync.d.ts","sourceRoot":"","sources":["../../src/commitAndSync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,EAAW,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAC9C,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,+GAA+G;IAC/G,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AACD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+JjF"}
@@ -1,10 +1,10 @@
1
1
  import { GitProcess } from 'dugite';
2
- import { credentialOn, credentialOff } from './credential';
3
- import { SyncParameterMissingError, GitPullPushError, CantSyncGitNotInitializedError } from './errors';
2
+ import { credentialOff, credentialOn } from './credential';
3
+ import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
4
+ import { CantSyncGitNotInitializedError, GitPullPushError, SyncParameterMissingError } from './errors';
4
5
  import { assumeSync, getDefaultBranchName, getGitRepositoryState, getRemoteName, getSyncState, haveLocalChanges } from './inspect';
5
6
  import { GitStep } from './interface';
6
- import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
7
- import { commitFiles, continueRebase, mergeUpstream, pushUpstream } from './sync';
7
+ import { commitFiles, continueRebase, fetchRemote, mergeUpstream, pushUpstream } from './sync';
8
8
  /**
9
9
  * `git add .` + `git commit` + `git rebase` or something that can sync bi-directional
10
10
  */
@@ -69,78 +69,82 @@ export async function commitAndSync(options) {
69
69
  }
70
70
  await credentialOn(dir, remoteUrl, gitUserName, accessToken, remoteName);
71
71
  logProgress(GitStep.FetchingData);
72
- await GitProcess.exec(['fetch', remoteName, defaultBranchName], dir);
73
- let exitCode = 0;
74
- let stderr;
75
- const syncStateAfterCommit = await getSyncState(dir, defaultBranchName, remoteName, logger);
76
- switch (syncStateAfterCommit) {
77
- case 'equal': {
78
- logProgress(GitStep.NoNeedToSync);
79
- await credentialOff(dir, remoteUrl);
80
- return;
81
- }
82
- case 'noUpstreamOrBareUpstream': {
83
- logProgress(GitStep.NoUpstreamCantPush);
84
- // try push, if success, means it is bare, otherwise, it is no upstream
85
- try {
72
+ try {
73
+ await fetchRemote(dir, remoteName, defaultBranchName);
74
+ let exitCode = 0;
75
+ let stderr;
76
+ const syncStateAfterCommit = await getSyncState(dir, defaultBranchName, remoteName, logger);
77
+ switch (syncStateAfterCommit) {
78
+ case 'equal': {
79
+ logProgress(GitStep.NoNeedToSync);
80
+ return;
81
+ }
82
+ case 'noUpstreamOrBareUpstream': {
83
+ logProgress(GitStep.NoUpstreamCantPush);
84
+ // try push, if success, means it is bare, otherwise, it is no upstream
85
+ try {
86
+ await pushUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
87
+ break;
88
+ }
89
+ catch (error) {
90
+ logWarn(`${JSON.stringify({ dir, remoteUrl, userInfo })}, remoteUrl may be not valid, noUpstreamOrBareUpstream after credentialOn`, GitStep.NoUpstreamCantPush);
91
+ throw error;
92
+ }
93
+ }
94
+ case 'ahead': {
95
+ logProgress(GitStep.LocalAheadStartUpload);
86
96
  await pushUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
87
97
  break;
88
98
  }
89
- catch (error) {
90
- logWarn(`${JSON.stringify({ dir, remoteUrl, userInfo })}, remoteUrl may be not valid, noUpstreamOrBareUpstream after credentialOn`, GitStep.NoUpstreamCantPush);
91
- throw error;
92
- }
93
- }
94
- case 'ahead': {
95
- logProgress(GitStep.LocalAheadStartUpload);
96
- await pushUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
97
- break;
98
- }
99
- case 'behind': {
100
- logProgress(GitStep.LocalStateBehindSync);
101
- await mergeUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
102
- break;
103
- }
104
- case 'diverged': {
105
- logProgress(GitStep.LocalStateDivergeRebase);
106
- ({ exitCode, stderr } = await GitProcess.exec(['rebase', `${remoteName}/${defaultBranchName}`], dir));
107
- logProgress(GitStep.RebaseResultChecking);
108
- if (exitCode !== 0) {
109
- logWarn(`exitCode: ${exitCode}, stderr of git rebase: ${stderr}`, GitStep.RebaseResultChecking);
99
+ case 'behind': {
100
+ logProgress(GitStep.LocalStateBehindSync);
101
+ await mergeUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
102
+ break;
110
103
  }
111
- if (exitCode === 0 &&
112
- (await getGitRepositoryState(dir, logger)).length === 0 &&
113
- (await getSyncState(dir, defaultBranchName, remoteName, logger)) === 'ahead') {
114
- logProgress(GitStep.RebaseSucceed);
104
+ case 'diverged': {
105
+ logProgress(GitStep.LocalStateDivergeRebase);
106
+ ({ exitCode, stderr } = await GitProcess.exec(['rebase', `${remoteName}/${defaultBranchName}`], dir));
107
+ logProgress(GitStep.RebaseResultChecking);
108
+ if (exitCode !== 0) {
109
+ logWarn(`exitCode: ${exitCode}, stderr of git rebase: ${stderr}`, GitStep.RebaseResultChecking);
110
+ }
111
+ if (exitCode === 0 &&
112
+ (await getGitRepositoryState(dir, logger)).length === 0 &&
113
+ (await getSyncState(dir, defaultBranchName, remoteName, logger)) === 'ahead') {
114
+ logProgress(GitStep.RebaseSucceed);
115
+ }
116
+ else {
117
+ await continueRebase(dir, gitUserName, email ?? defaultGitInfo.email, logger);
118
+ logProgress(GitStep.RebaseConflictNeedsResolve);
119
+ }
120
+ await pushUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
121
+ break;
115
122
  }
116
- else {
117
- await continueRebase(dir, gitUserName, email ?? defaultGitInfo.email, logger);
118
- logProgress(GitStep.RebaseConflictNeedsResolve);
123
+ default: {
124
+ logProgress(GitStep.SyncFailedAlgorithmWrong);
119
125
  }
120
- await pushUpstream(dir, defaultBranchName, remoteName, userInfo, logger);
121
- break;
122
126
  }
123
- default: {
124
- logProgress(GitStep.SyncFailedAlgorithmWrong);
127
+ if (exitCode === 0) {
128
+ logProgress(GitStep.PerformLastCheckBeforeSynchronizationFinish);
129
+ await assumeSync(dir, defaultBranchName, remoteName, logger);
130
+ logProgress(GitStep.SynchronizationFinish);
125
131
  }
126
- }
127
- await credentialOff(dir, remoteUrl);
128
- if (exitCode === 0) {
129
- logProgress(GitStep.PerformLastCheckBeforeSynchronizationFinish);
130
- await assumeSync(dir, defaultBranchName, remoteName, logger);
131
- logProgress(GitStep.SynchronizationFinish);
132
- }
133
- else {
134
- switch (exitCode) {
135
- // "message":"exitCode: 128, stderr of git push: fatal: unable to access 'https://github.com/tiddly-gittly/TiddlyWiki-Chinese-Tutorial.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 \n"
136
- case 128: {
137
- throw new GitPullPushError(options, stderr ?? '');
138
- }
139
- // TODO: handle auth expire and throw here
140
- default: {
141
- throw new GitPullPushError(options, stderr ?? '');
132
+ else {
133
+ switch (exitCode) {
134
+ // "message":"exitCode: 128, stderr of git push: fatal: unable to access 'https://github.com/tiddly-gittly/TiddlyWiki-Chinese-Tutorial.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 \n"
135
+ case 128: {
136
+ throw new GitPullPushError(options, stderr ?? '');
137
+ }
138
+ // TODO: handle auth expire and throw here
139
+ default: {
140
+ throw new GitPullPushError(options, stderr ?? '');
141
+ }
142
142
  }
143
143
  }
144
144
  }
145
+ finally {
146
+ // always restore original remoteUrl without token
147
+ await credentialOff(dir, remoteUrl);
148
+ }
145
149
  }
146
150
  //# sourceMappingURL=commitAndSync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commitAndSync.js","sourceRoot":"","sources":["../../src/commitAndSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commitAndSync.js","sourceRoot":"","sources":["../../src/commitAndSync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/credential.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,WAAY,MAAM,YAAY,MAAM,eAAe,MAAM,KAAG,MACkB,CAAC;AAGnH;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjJ;AACD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5G"}
1
+ {"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/credential.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,WAAY,MAAM,YAAY,MAAM,eAAe,MAAM,KAAG,MACoB,CAAC;AAGrH;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjJ;AACD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5G"}
@@ -1,8 +1,8 @@
1
- import { trim } from 'lodash';
2
1
  import { GitProcess } from 'dugite';
2
+ import { trim } from 'lodash';
3
3
  import { getRemoteUrl } from './inspect';
4
4
  // TODO: support folderLocation as rawUrl like `/Users/linonetwo/Desktop/repo/git-sync-js/test/mockUpstreamRepo/credential` for test, or gitlab url.
5
- export const getGitUrlWithCredential = (rawUrl, username, accessToken) => trim(rawUrl.replace(/\n/g, '').replace('https://github.com/', `https://${username}:${accessToken}@github.com/`));
5
+ export const getGitUrlWithCredential = (rawUrl, username, accessToken) => trim(rawUrl.replaceAll('\n', '').replace('https://github.com/', `https://${username}:${accessToken}@github.com/`));
6
6
  const getGitUrlWithOutCredential = (urlWithCredential) => trim(urlWithCredential.replace(/.+@/, 'https://'));
7
7
  /**
8
8
  * Add remote with credential
@@ -1 +1 @@
1
- {"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,oJAAoJ;AACpJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,WAAmB,EAAU,EAAE,CACvG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,WAAW,QAAQ,IAAI,WAAW,cAAc,CAAC,CAAC,CAAC;AACnH,MAAM,0BAA0B,GAAG,CAAC,iBAAyB,EAAU,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,SAAiB,EAAE,QAAgB,EAAE,WAAmB,EAAE,UAAkB;IAChI,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvF,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;IACtF,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5F,CAAC;AACD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,UAAkB,EAAE,SAAkB;IAC3F,MAAM,aAAa,GAAG,SAAS,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/E,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAC1E,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,oJAAoJ;AACpJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,WAAmB,EAAU,EAAE,CACvG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,WAAW,QAAQ,IAAI,WAAW,cAAc,CAAC,CAAC,CAAC;AACrH,MAAM,0BAA0B,GAAG,CAAC,iBAAyB,EAAU,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,SAAiB,EAAE,QAAgB,EAAE,WAAmB,EAAE,UAAkB;IAChI,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvF,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;IACtF,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5F,CAAC;AACD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,UAAkB,EAAE,SAAkB;IAC3F,MAAM,aAAa,GAAG,SAAS,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/E,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAC1E,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/F,CAAC"}
@@ -10,15 +10,15 @@ export declare class SyncParameterMissingError extends Error {
10
10
  }
11
11
  export declare class GitPullPushError extends Error {
12
12
  constructor(configuration: {
13
+ branch?: string;
13
14
  /** wiki folder path, can be relative */
14
15
  dir: string;
15
- /** the storage service url we are sync to, for example your github repo url */
16
- remoteUrl?: string;
17
16
  /** for example, origin */
18
17
  remote?: string;
18
+ /** the storage service url we are sync to, for example your github repo url */
19
+ remoteUrl?: string;
19
20
  /** user info used in the commit message */
20
21
  userInfo?: IGitUserInfos | IGitUserInfosWithoutToken;
21
- branch?: string;
22
22
  }, extraMessages: string);
23
23
  }
24
24
  export declare class CantSyncGitNotInitializedError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAEvE,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM;CAQpD;AACD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;gBACV,aAAa,SAAgB;CAO1C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAEvC,aAAa,EAAE;QACb,wCAAwC;QACxC,GAAG,EAAE,MAAM,CAAC;QACZ,+EAA+E;QAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,0BAA0B;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,2CAA2C;QAC3C,QAAQ,CAAC,EAAE,aAAa,GAAG,yBAAyB,CAAC;QACrD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EACD,aAAa,EAAE,MAAM;CAexB;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;gBACN,SAAS,EAAE,MAAM;CAO9B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;CAOrD;AAED,qBAAa,sCAAuC,SAAQ,KAAK;IAC/D,YAAY,EAAE,MAAM,CAAC;gBACT,YAAY,EAAE,MAAM;CAOjC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAEvE,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM;CAMpD;AACD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;gBACV,aAAa,SAAgB;CAO1C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAEvC,aAAa,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,wCAAwC;QACxC,GAAG,EAAE,MAAM,CAAC;QACZ,0BAA0B;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,+EAA+E;QAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,2CAA2C;QAC3C,QAAQ,CAAC,EAAE,aAAa,GAAG,yBAAyB,CAAC;KACtD,EACD,aAAa,EAAE,MAAM;CAiBxB;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;gBACN,SAAS,EAAE,MAAM;CAO9B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;CAOrD;AAED,qBAAa,sCAAuC,SAAQ,KAAK;IAC/D,YAAY,EAAE,MAAM,CAAC;gBACT,YAAY,EAAE,MAAM;CAQjC"}
@@ -64,7 +64,8 @@ export class CantSyncInSpecialGitStateAutoFixFailed extends Error {
64
64
  Object.setPrototypeOf(this, CantSyncInSpecialGitStateAutoFixFailed.prototype);
65
65
  this.stateMessage = stateMessage;
66
66
  this.name = 'CantSyncInSpecialGitStateAutoFixFailed';
67
- this.message = `E-6 Unable to Sync, this folder is in special condition, thus can't Sync directly. An auto-fix has been tried, but error still remains. Please resolve all the conflict manually (For example, use VSCode to open the wiki folder), if this still don't work out, please use professional Git tools (Source Tree, GitKraken) to solve this. This is caused by procedural bug in the git-sync-js.\n${stateMessage}`;
67
+ this.message =
68
+ `E-6 Unable to Sync, this folder is in special condition, thus can't Sync directly. An auto-fix has been tried, but error still remains. Please resolve all the conflict manually (For example, use VSCode to open the wiki folder), if this still don't work out, please use professional Git tools (Source Tree, GitKraken) to solve this. This is caused by procedural bug in the git-sync-js.\n${stateMessage}`;
68
69
  }
69
70
  }
70
71
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,KAAgB,EAAE,YAAqB;QACjD,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,4EAA4E,KAAK,2DAC9F,YAAY,IAAI,EAClB,EAAE,CAAC;IACL,CAAC;CACF;AACD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,gCAAgC;IAChC,aAAa,CAAS;IACtB,YAAY,aAAa,GAAG,aAAa;QACvC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,eAAe,aAAa,0CAA0C,aAAa,4BAA4B,CAAC;IACjI,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YACE,aAUC,EACD,aAAqB;QAErB,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,2FAA2F,IAAI,CAAC,SAAS,CAAC;YACvH,GAAG,aAAa;YAChB,QAAQ,EAAE;gBACR,GAAG,aAAa,CAAC,QAAQ;gBACzB,WAAW,EAAE,QAAQ,CAAE,aAAa,EAAE,QAA0B,EAAE,WAAW,EAAE;oBAC7E,MAAM,EAAE,EAAE;iBACX,CAAC;aACH;SACF,CAAC,qBAAqB,aAAa,EAAE,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,gDAAgD;IAChD,SAAS,CAAS;IAClB,YAAY,SAAiB;QAC3B,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,6GAA6G,SAAS,EAAE,CAAC;IAC1I,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,6GAA6G,CAAC;IAC/H,CAAC;CACF;AAED,MAAM,OAAO,sCAAuC,SAAQ,KAAK;IAC/D,YAAY,CAAS;IACrB,YAAY,YAAoB;QAC9B,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sCAAsC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,wCAAwC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,qYAAqY,YAAY,EAAE,CAAC;IACra,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,KAAgB,EAAE,YAAqB;QACjD,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,4EAA4E,KAAK,2DAA2D,YAAY,IAAI,EAAE,EAAE,CAAC;IAClL,CAAC;CACF;AACD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,gCAAgC;IAChC,aAAa,CAAS;IACtB,YAAY,aAAa,GAAG,aAAa;QACvC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,eAAe,aAAa,0CAA0C,aAAa,4BAA4B,CAAC;IACjI,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YACE,aAUC,EACD,aAAqB;QAErB,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,2FACb,IAAI,CAAC,SAAS,CAAC;YACb,GAAG,aAAa;YAChB,QAAQ,EAAE;gBACR,GAAG,aAAa,CAAC,QAAQ;gBACzB,WAAW,EAAE,QAAQ,CAAE,aAAa,EAAE,QAA0B,EAAE,WAAW,EAAE;oBAC7E,MAAM,EAAE,EAAE;iBACX,CAAC;aACH;SACF,CACH,qBAAqB,aAAa,EAAE,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,gDAAgD;IAChD,SAAS,CAAS;IAClB,YAAY,SAAiB;QAC3B,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,6GAA6G,SAAS,EAAE,CAAC;IAC1I,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,6GAA6G,CAAC;IAC/H,CAAC;CACF;AAED,MAAM,OAAO,sCAAuC,SAAQ,KAAK;IAC/D,YAAY,CAAS;IACrB,YAAY,YAAoB;QAC9B,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sCAAsC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,wCAAwC,CAAC;QACrD,IAAI,CAAC,OAAO;YACV,qYAAqY,YAAY,EAAE,CAAC;IACxZ,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
2
+ import { IGitUserInfos, ILogger } from './interface';
3
+ export interface IForcePullOptions {
4
+ defaultGitInfo?: typeof defaultDefaultGitInfo;
5
+ /** wiki folder path, can be relative */
6
+ dir: string;
7
+ logger?: ILogger;
8
+ /** the storage service url we are sync to, for example your github repo url
9
+ * When empty, and commitOnly===true, it means we just want commit, without sync
10
+ */
11
+ remoteUrl?: string;
12
+ /** user info used in the commit message
13
+ * When empty, and commitOnly===true, it means we just want commit, without sync
14
+ */
15
+ userInfo?: IGitUserInfos;
16
+ }
17
+ /**
18
+ * Ignore all local changes, force reset local to remote.
19
+ */
20
+ export declare function forcePull(options: IForcePullOptions): Promise<void>;
21
+ export declare function hardResetLocalToRemote(dir: string, branch: string, remoteName: string): Promise<void>;
22
+ //# sourceMappingURL=forcePull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forcePull.d.ts","sourceRoot":"","sources":["../../src/forcePull.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,EAAW,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAC9C,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,iBAAiB,iBA4CzD;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAK3F"}
@@ -0,0 +1,58 @@
1
+ import { GitProcess } from 'dugite';
2
+ import { credentialOff, credentialOn } from './credential';
3
+ import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
4
+ import { SyncParameterMissingError } from './errors';
5
+ import { getDefaultBranchName, getRemoteName } from './inspect';
6
+ import { GitStep } from './interface';
7
+ import { fetchRemote } from './sync';
8
+ /**
9
+ * Ignore all local changes, force reset local to remote.
10
+ */
11
+ export async function forcePull(options) {
12
+ const { dir, logger, defaultGitInfo = defaultDefaultGitInfo, userInfo, remoteUrl } = options;
13
+ const { gitUserName, branch } = userInfo ?? defaultGitInfo;
14
+ const { accessToken } = userInfo ?? {};
15
+ const defaultBranchName = (await getDefaultBranchName(dir)) ?? branch;
16
+ const remoteName = await getRemoteName(dir, branch);
17
+ if (accessToken === '' || accessToken === undefined) {
18
+ throw new SyncParameterMissingError('accessToken');
19
+ }
20
+ if (remoteUrl === '' || remoteUrl === undefined) {
21
+ throw new SyncParameterMissingError('remoteUrl');
22
+ }
23
+ const logProgress = (step) => logger?.info(step, {
24
+ functionName: 'forcePull',
25
+ step,
26
+ dir,
27
+ remoteUrl,
28
+ branch: defaultBranchName,
29
+ });
30
+ const logDebug = (message, step) => logger?.debug(message, {
31
+ functionName: 'forcePull',
32
+ step,
33
+ dir,
34
+ remoteUrl,
35
+ branch: defaultBranchName,
36
+ });
37
+ logProgress(GitStep.StartForcePull);
38
+ logDebug(`Successfully Running git init for force pull in dir ${dir}`, GitStep.StartForcePull);
39
+ logProgress(GitStep.StartConfiguringGithubRemoteRepository);
40
+ await credentialOn(dir, remoteUrl, gitUserName, accessToken, remoteName);
41
+ try {
42
+ logProgress(GitStep.StartFetchingFromGithubRemote);
43
+ await fetchRemote(dir, defaultGitInfo.remote, defaultGitInfo.branch);
44
+ logProgress(GitStep.StartResettingLocalToRemote);
45
+ await hardResetLocalToRemote(dir, branch, remoteName);
46
+ logProgress(GitStep.FinishForcePull);
47
+ }
48
+ finally {
49
+ await credentialOff(dir, remoteName, remoteUrl);
50
+ }
51
+ }
52
+ export async function hardResetLocalToRemote(dir, branch, remoteName) {
53
+ const { exitCode, stderr } = await GitProcess.exec(['reset', '--hard', `${remoteName}/${branch}`], dir);
54
+ if (exitCode !== 0) {
55
+ throw new Error(`Failed to reset local to remote: ${stderr}`);
56
+ }
57
+ }
58
+ //# sourceMappingURL=forcePull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forcePull.js","sourceRoot":"","sources":["../../src/forcePull.ts"],"names":[],"mappings":"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"}