Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
saqqdy committed Jun 27, 2020
2 parents f85621b + d6485eb commit b59bdba
Show file tree
Hide file tree
Showing 7 changed files with 224 additions and 37 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 2020.06.27 v1.2.5更新日志
1. 升级get/save指令,暂存区“绑定”git分支,新增高级用法
2. 修复config指令bug
3. 修复continue指令bug

# 2020.06.16 v1.2.4更新日志
1. 修复在node v14版本下的兼容问题
2. 修复包缺失BUG
Expand Down
33 changes: 31 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,17 +155,46 @@ gitm revert xxxxxx -m 1

### gitm save
#### 短指令:gitm sv
暂存代码
暂存当前分支代码
```
# 指令形式:gitm save [message] [-f --force]
# message可以不传,默认会存入当前分支名称作为暂存标记信息
# 传入-f或者--force,程序会把没有版本库的文件执行add之后暂存起来
gitm save [-f --force]
# 简单使用
gitm save
gitm sv
# 暂存没有加入版本控制的文件
gitm save --force
gitm save -f
# 设置自定义暂存信息,方便取出
gitm save feature/1000
gitm save "test login"
```

### gitm get
#### 短指令:gitm gt
恢复暂存代码
```
# 指令形式:gitm get [message] [index] [-k --keep]
# message传入暂存时写入的全部完整信息,可以不传,默认获取在当前分支暂存的记录,存在多条记录时默认恢复最近的一条记录,或者可传入index恢复你需要的记录
# 如果你希望在操作暂存区恢复之后保留暂存区的记录,传入--keep
# 简单使用
gitm get
gitm gt
# 恢复feature/1000分支的暂存记录到当前分支,取第2条记录(index不传默认取第1条记录:0)
gitm get feature/1000 1
# 恢复时不删除暂存区数据
gitm get --keep
gitm get -k
# 恢复暂存信息为“test login”的暂存记录
gitm get "test login"
```

### gitm upgrade
Expand Down
2 changes: 1 addition & 1 deletion lib/gitm-branch.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ program.name('gitm branch').usage('[-k --key [keyword]] [-t --type [type]] [-d -
queue(cmd).then(function (data) {
data.forEach(function (el, index) {
if (index === 0 && el.code === 0) {
var list = el.out.split('\n');
var list = el.out && el.out.split('\n') || [];
list = list.filter(function (el) {
var fit = true;

Expand Down
76 changes: 65 additions & 11 deletions lib/gitm-get.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,76 @@ require("core-js/modules/es.symbol");

require("core-js/modules/es.symbol.description");

require("core-js/modules/es.array.concat");

require("core-js/modules/es.function.name");

require("core-js/modules/es.object.to-string");

require("core-js/modules/es.promise");

require("regenerator-runtime/runtime");

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }

function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }

var program = require('commander');

var sh = require('shelljs');

var _require = require('./js/index'),
queue = _require.queue;

program.name('gitm get').usage('').description('恢复暂存区最近一次暂存的文件').action(function () {
queue([{
cmd: 'git stash pop',
config: {
success: '文件恢复成功',
fail: '恢复失败,请检查冲突'
}
}]);
});
queue = _require.queue,
getCurrent = _require.getCurrent,
getStashList = _require.getStashList,
warning = _require.warning;

program.name('gitm get').usage('[message] [index]').arguments('[message] [index]').description('恢复暂存区文件').option('-k, --keep [keep]', '保留暂存区不删除', false).action(function () {
var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(message, index, opt) {
var list;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (message) {
_context.next = 4;
break;
}

_context.next = 3;
return getCurrent();

case 3:
message = _context.sent;

case 4:
_context.next = 6;
return getStashList(message);

case 6:
list = _context.sent;
if (list.length === 0) sh.echo(warning("\u8BE5\u5206\u652F\u6CA1\u6709\u6682\u5B58\u4EFB\u4F55\u6587\u4EF6\uFF01"));
if (index === undefined && list.length > 1) sh.echo(warning("\u8BE5\u5206\u652F\u4E0B\u6709".concat(list.length, "\u6761\u6682\u5B58\u8BB0\u5F55\uFF0C\u9ED8\u8BA4\u6062\u590D\u6700\u8FD1\u7684\u4E00\u6761\u8BB0\u5F55")));
if (list.length > 2) sh.echo(warning("\u8BE5\u5206\u652F\u4E0B\u6709".concat(list.length, "\u6761\u6682\u5B58\u8BB0\u5F55\uFF0C\u5EFA\u8BAE\u5B9A\u671F\u6E05\u7406\u4E0D\u5FC5\u8981\u7684\u6682\u5B58\u8BB0\u5F55\uFF01")));
queue([{
cmd: "git stash ".concat(opt.keep ? 'apply' : 'pop', " ").concat(list[index || 0].key),
config: {
again: opt.keep ? false : "git stash drop ".concat(list[index || 0].key),
success: '文件恢复成功',
fail: '恢复失败,请检查冲突'
}
}]);

case 11:
case "end":
return _context.stop();
}
}
}, _callee);
}));

return function (_x, _x2, _x3) {
return _ref.apply(this, arguments);
};
}());
program.parse(process.argv);
83 changes: 62 additions & 21 deletions lib/gitm-save.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,73 @@ require("core-js/modules/es.symbol.description");

require("core-js/modules/es.function.name");

require("core-js/modules/es.object.to-string");

require("core-js/modules/es.promise");

require("regenerator-runtime/runtime");

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }

function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }

var program = require('commander');

var sh = require('shelljs');

var _require = require('./js/index'),
queue = _require.queue;

program.name('gitm save').usage('').description('暂存当前分支文件').option('-f, --force', '没有版本的文件也暂存,这会执行git add .', false).action(function (opt) {
var cmd = [{
cmd: 'git stash',
config: {
success: '文件暂存成功',
fail: '出错了,请联系管理员'
}
}];

if (opt.force) {
cmd = ['git add .', {
cmd: 'git stash',
config: {
success: '文件暂存成功',
fail: '出错了,请联系管理员'
queue = _require.queue,
getCurrent = _require.getCurrent;

program.name('gitm save').usage('[message]').arguments('[message]').description('暂存当前分支文件').option('-f, --force', '没有版本的文件也暂存,这会执行git add .', false).action(function () {
var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(message, opt) {
var cmd;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (message) {
_context.next = 4;
break;
}

_context.next = 3;
return getCurrent();

case 3:
message = _context.sent;

case 4:
cmd = [{
cmd: "git stash save \"".concat(message, "\""),
config: {
success: '文件暂存成功',
fail: '出错了,请联系管理员'
}
}];

if (opt.force) {
cmd = ['git add .', {
cmd: "git stash save \"".concat(message, "\""),
config: {
success: '文件暂存成功',
fail: '出错了,请联系管理员'
}
}];
}

queue(cmd);

case 7:
case "end":
return _context.stop();
}
}
}];
}
}, _callee);
}));

queue(cmd);
});
return function (_x, _x2) {
return _ref.apply(this, arguments);
};
}());
program.parse(process.argv);
60 changes: 59 additions & 1 deletion lib/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@

require("core-js/modules/es.array.concat");

require("core-js/modules/es.array.for-each");

require("core-js/modules/es.array.index-of");

require("core-js/modules/es.array.join");

require("core-js/modules/es.array.splice");

require("core-js/modules/es.object.assign");
Expand All @@ -14,10 +18,16 @@ require("core-js/modules/es.promise");

require("core-js/modules/es.regexp.exec");

require("core-js/modules/es.string.match");

require("core-js/modules/es.string.replace");

require("core-js/modules/es.string.split");

require("core-js/modules/es.string.trim");

require("core-js/modules/web.dom-collections.for-each");

require("regenerator-runtime/runtime");

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
Expand Down Expand Up @@ -142,7 +152,7 @@ var queue = function queue(list) {

if (!cfg.again) {
rest.shift();
} else if (typeof cfg.again !== true) {
} else if (cfg.again !== true) {
rest.splice(0, 1, cfg.again);
}

Expand Down Expand Up @@ -297,6 +307,53 @@ var getCurrent = function () {
};
}();

var getStashList = function () {
var _ref4 = _asyncToGenerator(regeneratorRuntime.mark(function _callee4(key) {
var data, list, arr;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return queue(['git stash list']);

case 2:
data = _context4.sent[0].out.replace(/^\*\s+/, '');
list = data && data.split('\n') || [], arr = [];
if (list.length > 10) sh.echo(warning("\u8BE5\u9879\u76EE\u4E0B\u4E00\u5171\u6709".concat(list.length, "\u6761\u6682\u5B58\u8BB0\u5F55\uFF0C\u5EFA\u8BAE\u5B9A\u671F\u6E05\u7406\uFF01")));

try {
list.forEach(function (item) {
var msgArr = item.split(':'),
first = msgArr.shift();

if (!key || key && key === msgArr[msgArr.length - 1].trim()) {
var m = first.match(/^stash@\{(\d+)\}$/);
if (msgArr.length > 1) msgArr.shift();
arr.push({
key: first,
index: +m[1],
msg: msgArr.join(':').trim()
});
}
});
} catch (e) {}

return _context4.abrupt("return", arr);

case 7:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));

return function getStashList(_x2) {
return _ref4.apply(this, arguments);
};
}();

var getMessage = function getMessage(type) {
var str = '',
d = new Date();
Expand Down Expand Up @@ -438,6 +495,7 @@ module.exports = {
getStatus: getStatus,
checkBranch: checkBranch,
getCurrent: getCurrent,
getStashList: getStashList,
postMessage: postMessage,
getCommandMessage: getCommandMessage,
handleConfigOutput: handleConfigOutput
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "gitmars",
"description": "一个高度定制化的git工作流工具",
"version": "1.2.4",
"version": "1.2.5",
"main": "lib/gitm.js",
"scripts": {
"eslint": "eslint --fix --ext .vue,.js",
Expand Down

0 comments on commit b59bdba

Please sign in to comment.