详解Node.js利用node-git-server快速搭建git服务器


Posted in Javascript onSeptember 27, 2017

本文用到了node-git-server

1、检测本地git版本

该包的使用需要机器上本来就安装git,且git的版本大于等于2.7:

?─root@lt /home/workspace 
 ?─# git --version             
 git version 2.7.4

2、利用npm安装包

?─root@lt /home/workspace 
?─# npm install node-git-server
/home/workspace
└─┬ node-git-server@0.3.0 
 ├─┬ http-duplex@0.0.2 
 │ ├── duplex-pipe@0.0.2 
 │ └── inherits@1.0.2 
 └── through@2.3.8

npm WARN enoent ENOENT: no such file or directory, open '/home/workspace/package.json'
npm WARN workspace No description
npm WARN workspace No repository field.
npm WARN workspace No README data
npm WARN workspace No license field.

有警告可以先忽略~

3、编写example

cd ./node_modules/node-git-server/example/

编辑index.js

const Server = require('node-git-server');
const repos = new Server('/tmp/repos');
const port = process.env.PORT || 80;
 
repos.on('push', (push) => {
  console.log('push ' + push.repo + '/' + push.commit
    + ' (' + push.branch + ')'
  );
  push.accept();
});
 
repos.on('fetch', (fetch) => {
  console.log('fetch ' + fetch.commit);
  fetch.accept();
});
 
repos.listen(port, () => {
  console.log(`node-git-server running at http://localhost:${port}`)
});

4、运行

?─root@lt /home/workspace/node_modules/node-git-server/example 
 ?─# node index.js 
 node-git-server running at http://localhost:80

5、测试git服务器

由于我的git服务器是在aliyun上跑的,并且绑定了www.beautifulzzzz.com,所以我先在本地新建一个git仓库,并将其推送同步到云端,然后再clone下来来做测试:

详解Node.js利用node-git-server快速搭建git服务器

可见将本地git仓库同步到云端和普通的git服务器没有区别,简直太简单方便了!!!

详解Node.js利用node-git-server快速搭建git服务器

同样git clone也比较简单!

6、云端git仓库的位置

在index.js中我们指定git仓库存放在:const repos = new Server('/tmp/repos');目录下

登录远程服务器可以发现在/tmp/repos/目录下存在我们同步的git仓库:(其中beep.git是之前push的一个)

?─root@lt /tmp/repos 
 ?─# ls
 beautifulzzzz.git beep.git

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过javascript的匿名函数来分析几段简单有趣的代码
Jun 29 Javascript
js静态方法与实例方法分析
Jul 04 Javascript
JS使用正则表达式除去字符串中重复字符的方法
Nov 05 Javascript
跟我学习javascript的循环
Nov 18 Javascript
Node.js中常规的文件操作总结
Oct 13 Javascript
jQueryUI Datepicker组件设置日期高亮
Oct 13 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 Javascript
Vue中的Vux配置指南
Dec 08 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
node.js基于socket.io快速实现一个实时通讯应用
Apr 23 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 #Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 #Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 #Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 #Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 26 #Javascript
微信小程序url与token设置详解
Sep 26 #Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 #Javascript
You might like
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
python实现根据图标提取分类应用程序实例
2014/09/28 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
python 异或加密字符串的实例
2018/10/14 Python
如何基于python操作excel并获取内容
2019/12/24 Python
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
初中生期末考试的自我评价
2013/12/17 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
绿色环保标语
2014/06/12 职场文书
志愿服务心得体会
2016/01/15 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python