制作一个文档同步工具,自动同步到gitee中。。。
之所以要做这个工具是为了让自己可以随时用电脑时能记录日常工作或生活。一般只需要简单记录下就行了。这样我在家里的和公司里的记录都能同步看到。
这样后期整理的时候看到几个关键词就能想起来具体的事情,有的也可以为日后整理成文章做一个草稿,这样写文章才能有头有尾,否则想到什么说什么是非常不利于写出文章的。
一开始我使用手动同步的方式,但是发现很麻烦,之后就直接用了个批处理文件来一次性同步。
git pull
git add .
git commit -m '同步'
git push
git status
@echo off
pause
但是这样还是有几个缺点:
1.有时候会忘记执行同步,特别是下班的时候,直接关机的。
2.如果一开始忘记同步了,后面就会产生git冲突。体验不是太好。
因为后来抽时间写了个小程序。只要把程序运行在后台,每过一段时间就会自动将文档同步起来。
本地改过内容会自动同步到git仓库,git仓库内容被改后,又会自动拉取最新内容同步到本地,这样就能保证远程仓库和本地最新了,两台电脑直接的内容也就同步了。
我们开看下实现方式:
首先我们必须要有个git仓库用来存储数据。
去gitee.com申请开个仓库就行。创建后得到远程仓库的地址,复制下来备用。
本地创建一个文件夹用于同步文档数据。
文件加中执行 npm init -y 创建package.json
进行绑定远程仓库:
git init #进行初始化仓库
git remote add origin [你的仓库地址]
git push origin
git push --set-upstream origin master #首次同步仓库
这样之后就可以直接运行工具了。
在文件夹新增文件index.js
在文件夹中安装依赖包
yarn add child_process
yarn add iconv-lite
yarn add moment
index.js中写入代码:
const child_process = require("child_process");
const iconv = require("iconv-lite");
const moment = require("moment"); const encoding = "cp936";
const binaryEncoding = "binary"; //执行一行cmd命令
function cmd(text) {
return new Promise((resolve, reject) => {
child_process.exec(
text,
{ encoding: binaryEncoding },
(err = "", stdout = "", stderr) => {
if (err) {
resolve(err);
return;
}
resolve(iconv.decode(Buffer.from(stdout, binaryEncoding), encoding));
}
);
});
} //cmd运行顺序
async function run() {
const time = moment().format("YYYY-MM-DD HH:mm:ss");
let status = await cmd("git status");
if (
status.includes(
"not a git repository (or any of the parent directories): .git"
)
) {
//目录未绑定git地址
console.log("目录未绑定git地址");
} else {
//已绑定git
//拉取
const pull = await cmd("git pull");
if (
!pull.includes("Already up to date") &&
!pull.includes("Already up-to-date")
) {
//拉取下来了最新数据
console.log(`拉取了最新数据: ${time}`);
}
//状态
status = await cmd("git status");
if (status.includes('(use "git add"')) {
//本地内容有改动 需要提交
await cmd("git add .");
await cmd('git commit -m "同步"');
await cmd("git push");
console.log(`同步成功: ${time}`);
}
}
} //每30秒执行一次
setInterval(() => {
run();
}, 1000 * 30);
run();
这样还不行,因为我们要同步的是指定目录的文件,不是当前目录的文件。所以我们要将其打包成一个exe文件,放到需要同步的文件夹中,才能同步指定目录。
首先我们全局安装一个依赖包:pkg
npm install -g pkg
然后在工具的目录中执行:
pkg -t win index.js
即可将该nodejs项目打包成独立的exe程序,然后将这个exe程序放在需要git同步的目录中。
另外,为了不把这个exe文件同步到仓库中,我们需要排除这个文件
所以要在同步的目录中放一个.gitignore文件,里面加上一行用于去除该exe文件
这个打包出来的文件:https://www.jianguoyun.com/p/DQGnvHQQ6KKRChjg8qIE
这个配置文件:https://www.jianguoyun.com/p/DbWJu0MQ6KKRChi486IE
制作一个文档同步工具,自动同步到gitee中。。。的更多相关文章
- GIT+云盘作 做 文档管理工具
GIT+云盘作 做 文档管理工具 在工作中, 会遇到公司的文档 和 自己家里的 文档进行同步的问题, 通常我们使用U盘作为传输节制, 但是不是非常好,文档的改动都不能发现, 导致回家同步的时候, 出各 ...
- Doxygen自动文档生成工具在Eclipse中的集成及使用举例
你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...
- GitBook一个专注于帮助文档的工具
官网:https://www.gitbook.com GitHub组织:https://github.com/gitbookio GitBook一个专注于帮助文档的工具,比如: 1.简单的左侧列表右侧 ...
- 接口文档管理工具-Postman、Swagger、RAP(转载)
接口文档管理工具-Postman.Swagger.RAP 转自:http://www.51testing.com/html/10/n-3715910.html 在项目开发测试中,接口文档是贯穿始终的. ...
- API文档管理工具
系统庞大之后,前后端分离开发,前端调用后端提供的接口,请求协议一般是 HTTP,数据格式一般是 JSON.后台只负责数据的提供和计算,而完全不处理展现逻辑和样式:前端则负责拿到数据,组织数据并展现的工 ...
- .NET平台开源项目速览(4).NET文档生成工具ADB及使用
很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...
- Sandcastle----强大的C#文档生成工具
最近客户索要产品的二次开发类库文档,由于开发过程中并没有考虑过此类文档,而且项目规范比较,持续时间比较长,经手人比较多,还真是麻烦,如果人工制作文档需要是一个比较大的工程.还好有这个文档生成工具,能够 ...
- Markdown 文档生成工具
之前用了很多Markdown 文档生成工具,发现有几个挺好用的,现在整理出来,方便大家快速学习. loppo: 非常简单的静态站点生成器 idoc:简单的文档生成工具 gitbook:大名鼎鼎的文档协 ...
- 笔记大神推荐的个人知识文档管理工具mybase
铛铛铛,今天我要给大家推荐一款个人知识笔记管理神器,不出你们所料,它就是mybase. 那mybase究竟能干啥呢?借用mybase中文官网的一句话来说,mybase软件可以将电脑上的文档.知识.笔记 ...
随机推荐
- CSP2020 自爆记
Day -1 - 2020.11.5 发现自己 dp 学得很烂--刷了几道 dp 找找感觉. 晚上死活睡不着,觉得要爆炸了. Day 0 - 2020.11.6 白天在学校觉得人飘了. 傍晚回来拿了准 ...
- Run For Beer CF575G
Run for beer CF 575G 如果直接bfs分层贪心可以做,但是很毒瘤,具体可以参考Gavinzheng的提交 考虑魔改dijkstra 首先,每次拿权值最小的来松弛肯定没有问题,只是怎么 ...
- P4569 [BJWC2011]禁忌
题目传送门. 题意简述:给出大小为 \(n\) 的字典 \(s\).设函数 \(g(t)\) 表示 \(t\) 最多能被分割成的单词个数.等概率随机生成长度为 \(len\) 的字符串 \(T\),求 ...
- YAOI Round #1 (Div.2) 题解
总体来说很有一定区分度的(主要分为 4 题.2 题.1 题几档),ACM 赛制也挺有意思的,征求一下大家对这场比赛的意见吧,可以在这个帖子下回复,我都会看的. 简要题解:( A. 云之彼端,约定的地方 ...
- echarts中饼状图数据太多进行翻页
echarts饼状图数据太多 echarts 饼状图内容太多怎么处理 有些时候,我们饼状图中echarts的数据可能会很多. 这个时候展示肯定会密密麻麻的.导致显示很凌乱 我们需要'翻页'类似表格展示 ...
- Linux 软件安装位置选择指南
Linux 软件安装 Linux 下安装软件不像 Windows 下安装这么简单,Windows 下会自动选择合适安装路径,而 Linux 下安装路径大部分完全由自己决定,我可以将软件安装到任意可 ...
- 11 — springboot集成swagger — 更新完毕
1.前言 理论知识滤过,自行百度百科swagger是什么 2.导入依赖 <!-- swagger所需要的依赖--> <dependency> <groupId>io ...
- 商业创新不能等?用友低代码开发平台YonBuilder为您加速!
随着云计算.人工智能.物联网.大数据.5G等新一代技术的快速发展,越来越多的企业希望借助技术的力量加速数智化转型,期许通过更加敏捷和强大的应用系统推动企业的商业创新速度.但传统软件开发周期长.开发成本 ...
- SpringCloud微服务实战——搭建企业级开发框架(三十):整合EasyExcel实现数据表格导入导出功能
批量上传数据导入.数据统计分析导出,已经基本是系统必不可缺的一项功能,这里从性能和易用性方面考虑,集成EasyExcel.EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项 ...
- 分布式服务治理框架Dubbo的前世今生及应用实战
Dubbo的出现背景 Dubbo从开源到现在,已经出现了接近10年时间,在国内各大企业被广泛应用. 它到底有什么魔力值得大家去追捧呢?本篇文章给大家做一个详细的说明. 大规模服务化对于服务治理的要求 ...