git-sync-js 1.0.5 → 1.1.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/credential.ts"],"names":[],"mappings":"AAIA,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,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,6 +1,7 @@
1
1
  import { trim } from 'lodash';
2
2
  import { GitProcess } from 'dugite';
3
3
  import { getRemoteUrl } from './inspect';
4
+ // TODO: support folderLocation as rawUrl like `/Users/linonetwo/Desktop/repo/git-sync-js/test/mockUpstreamRepo/credential` for test, or gitlab url.
4
5
  export const getGitUrlWithCredential = (rawUrl, username, accessToken) => trim(rawUrl.replace(/\n/g, '').replace('https://github.com/', `https://${username}:${accessToken}@github.com/`));
5
6
  const getGitUrlWithOutCredential = (urlWithCredential) => trim(urlWithCredential.replace(/.+@/, 'https://'));
6
7
  /**
@@ -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,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,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,6 +1,6 @@
1
1
  import { IGitUserInfosWithoutToken, IGitUserInfos, ILogger } from './interface';
2
2
  import { defaultGitInfo as defaultDefaultGitInfo } from './defaultGitInfo';
3
- export declare type IInitGitOptions = IInitGitOptionsSyncImmediately | IInitGitOptionsNotSync;
3
+ export type IInitGitOptions = IInitGitOptionsSyncImmediately | IInitGitOptionsNotSync;
4
4
  export interface IInitGitOptionsSyncImmediately {
5
5
  /** wiki folder path, can be relative */
6
6
  dir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"initGit.d.ts","sourceRoot":"","sources":["../../src/initGit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAI3E,oBAAY,eAAe,GAAG,8BAA8B,GAAG,sBAAsB,CAAC;AACtF,MAAM,WAAW,8BAA8B;IAC7C,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,eAAe,EAAE,IAAI,CAAC;IACtB,yHAAyH;IACzH,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC/C;AACD,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,yBAAyB,GAAG,aAAa,CAAC;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC/C;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrE"}
1
+ {"version":3,"file":"initGit.d.ts","sourceRoot":"","sources":["../../src/initGit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAI3E,MAAM,MAAM,eAAe,GAAG,8BAA8B,GAAG,sBAAsB,CAAC;AACtF,MAAM,WAAW,8BAA8B;IAC7C,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,eAAe,EAAE,IAAI,CAAC;IACtB,yHAAyH;IACzH,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC/C;AACD,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,yBAAyB,GAAG,aAAa,CAAC;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC/C;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrE"}
@@ -33,7 +33,7 @@ export declare function haveLocalChanges(wikiFolderPath: string): Promise<boolea
33
33
  * @param wikiFolderPath
34
34
  */
35
35
  export declare function getDefaultBranchName(wikiFolderPath: string): Promise<string | undefined>;
36
- export declare type SyncState = 'noUpstreamOrBareUpstream' | 'equal' | 'ahead' | 'behind' | 'diverged';
36
+ export type SyncState = 'noUpstreamOrBareUpstream' | 'equal' | 'ahead' | 'behind' | 'diverged';
37
37
  /**
38
38
  * determine sync state of repository, i.e. how the remote relates to our HEAD
39
39
  * 'ahead' means our local state is ahead of remote, 'behind' means local state is behind of the remote
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/inspect.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,OAAO,EAAE,MAAM,aAAa,CAAC;AAM/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoC7F;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUvE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/E;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB9F;AAED,oBAAY,SAAS,GAAG,0BAA0B,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC/F;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA4BnI;AAED,wBAAsB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvI;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDrG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBpF;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAchF"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/inspect.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,OAAO,EAAE,MAAM,aAAa,CAAC;AAM/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoC7F;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUvE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/E;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB9F;AAED,MAAM,MAAM,SAAS,GAAG,0BAA0B,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC/F;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA4BnI;AAED,wBAAsB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvI;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDrG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBpF;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAchF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-sync-js",
3
- "version": "1.0.5",
3
+ "version": "1.1.0",
4
4
  "description": "JS implementation for Git-Sync, a handy script that backup your notes in a git repo to the remote git services.",
5
5
  "homepage": "https://github.com/linonetwo/git-sync-js",
6
6
  "bugs": {
@@ -29,41 +29,44 @@
29
29
  "prettier:write": "prettier --write src/**/*.ts"
30
30
  },
31
31
  "dependencies": {
32
- "dugite": "^1.104.0",
33
- "fs-extra": "^10.0.1",
34
- "isomorphic-git": "^1.17.0",
32
+ "dugite": "^2.5.0",
33
+ "fs-extra": "^11.1.1",
34
+ "isomorphic-git": "^1.24.2",
35
35
  "lodash": "^4.17.21"
36
36
  },
37
37
  "devDependencies": {
38
- "@types/fs-extra": "^9.0.13",
39
- "@types/jest": "^27.4.1",
40
- "@types/lodash": "^4.14.181",
41
- "@types/node": "^17.0.23",
42
- "@typescript-eslint/eslint-plugin": "^5.17.0",
38
+ "@types/fs-extra": "^11.0.1",
39
+ "@types/jest": "^29.5.2",
40
+ "@types/lodash": "^4.14.195",
41
+ "@types/node": "^20.3.1",
42
+ "@typescript-eslint/eslint-plugin": "^5.60.0",
43
43
  "@typescript-eslint/parser": "^5.17.0",
44
- "docs-ts": "^0.6.10",
45
- "eslint": "^8.12.0",
46
- "eslint-config-prettier": "8.5.0",
47
- "eslint-config-standard": "16.0.3",
48
- "eslint-config-standard-with-typescript": "21.0.1",
44
+ "docs-ts": "^0.8.0",
45
+ "eslint": "8.43.0",
46
+ "eslint-config-standard": "^17.1.0",
47
+ "eslint-config-standard-with-typescript": "35.0.0",
49
48
  "eslint-import-resolver-alias": "1.1.2",
50
- "eslint-import-resolver-typescript": "2.7.1",
51
- "eslint-plugin-html": "6.2.0",
52
- "eslint-plugin-import": "2.25.4",
49
+ "eslint-import-resolver-typescript": "3.5.5",
50
+ "eslint-plugin-autofix": "^1.1.0",
51
+ "eslint-plugin-dprint-integration": "^0.3.0",
52
+ "eslint-plugin-html": "7.1.0",
53
+ "eslint-plugin-import": "^2.27.5",
54
+ "eslint-plugin-n": "^16.0.0",
53
55
  "eslint-plugin-node": "11.1.0",
54
- "eslint-plugin-prettier": "4.0.0",
55
- "eslint-plugin-promise": "6.0.0",
56
- "eslint-plugin-react": "7.29.4",
57
- "eslint-plugin-react-hooks": "4.4.0",
58
- "eslint-plugin-security": "^1.4.0",
59
- "eslint-plugin-security-node": "^1.1.1",
60
- "eslint-plugin-unicorn": "42.0.0",
61
- "jest": "^27.5.1",
62
- "prettier": "2.6.2",
63
- "rimraf": "^3.0.2",
64
- "ts-jest": "^27.1.4",
65
- "ts-node": "^10.7.0",
66
- "typescript": "^4.6.3"
56
+ "eslint-plugin-promise": "^6.1.1",
57
+ "eslint-plugin-react": "7.32.2",
58
+ "eslint-plugin-react-hooks": "4.6.0",
59
+ "eslint-plugin-security": "1.7.1",
60
+ "eslint-plugin-security-node": "1.1.1",
61
+ "eslint-plugin-typescript-sort-keys": "2.3.0",
62
+ "eslint-plugin-unicorn": "47.0.0",
63
+ "eslint-plugin-unused-imports": "^2.0.0",
64
+ "jest": "^29.5.0",
65
+ "dprint": "^0.37.1",
66
+ "rimraf": "^5.0.1",
67
+ "ts-jest": "^29.1.0",
68
+ "ts-node": "^10.9.1",
69
+ "typescript": "^5.1.3"
67
70
  },
68
71
  "keywords": [
69
72
  "git,sync,notebook,commit,rebase,note"