NAS搭建自己的Git私服

去年公司采购了一台NAS设备,本来是给文化业务部门做素材库用的,结果我发现磁盘利用率很低,看着那么贵的希捷酷狼闲置真心痛啊!突然想到目前公司软件研发的源码管理分两块,一个是gitee,一个是阿里云ECS服务器搭建的Gitblit,这两个资源已经被挤占的很严重,还要另外开销一笔费用,不如集中起来管理到一个设备上。

名称版本备注
群晖NASDS1821+
群晖NAS操作系统 DSM7.2.1-69057 Update 5
群晖NAS套件Git Server2.39.1-1079
终端机SSH客户端 Xshell7.0.0040
终端机Git客户端2.45.1

NAS创建用户及用户组

  1. 使用管理员登录NAS控制台。
  2. 进入控制面板 > 文件共享 > 共享文件夹 > 新增 - 名称 GitRepo。
  3. 进入控制面板 > 文件共享 > 用户与群组 > 用户账号 > 新增 - 创建用户 - 名称 gituser。(PS:几个开发人员就创建几个)
  4. 进入控制面板 > 文件共享 > 用户与群组 > 用户群组 > 新增 - 群组名称 gitdev。(PS:为了方便后续文件目录按群组授权)
  5. 进入控制面板 > 文件共享 > 共享文件夹 > 选择 GitRepo - 编辑 - 权限 - gituser 勾选 可读写。

安装Git套件并授权

  1. 进入套件中心 > 所有套件 > 搜索 - Git Server - 安装。
  2. 打开套件Git Server > 允许访问 - 勾选 gituser。

配置SSH访问

  1. 进入控制面板 > 文件共享 > 用户与群组 > 高级设置 > 家目录 - 启用家目录服务。1
  2. 进入控制面板 > 连接性 > 终端机和 SNMP > 终端 - 启用 SSH 服务。1

终端机通过SSH连接NAS服务器的Git Server并用linux命令创建和授权git目录

  1. 用Xshell连接NAS,类似连接liunx系统。(NAS网络访问配置我是采用了DDNS并在路由器进行了 22 端口转发。)
  2. 我习惯Git仓库的目录按照项目来分组,所以在GitRepo目录下按照项目名称再创建一层ProjectName目录,ProjectName下再创建各个源码工程的Git仓库目录。(PS:当然也可以通过分支的方式来一个仓库管理多个项目,一切看个人习惯!)

我的仓库目录结构基本如下所示:
GitRepo------|
-----------ProjectName------|
-------------------------CodeProject1.git
-------------------------CodeProject2.git
-------------------------CodeProject3.git
命令如下

cd /volume1/GitRepo/
mkdir ProjectName
cd ProjectName/
mkdir CodeProject.git
  1. 初始化git仓库,加属性–bare代表创建远程仓库。
cd CodeProject.git/
git init --bare
  1. 授权git用户可以读写源代码仓库目录。(PS: 这里我直接把整个GitRepo递归授权给了整个Developer用户组,建议还是单独对用户授权!)
sudo chown -R :gitdev GitRepo

针对某个用户授权某个Git源码仓库目录,具体详查liunx命令。

sudo chown -R gituser CodeProject.git 

注意,执行该授权命令时所在的目录。

迁移本地源码工程的Git远程仓库地址

  1. 打开本地git bash窗口,执行
git clone ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git
  1. 如果你本地已经有源码工程,可以直接去修改一下远程仓库地址即可。
    例如: IDEA中Git > manage Remotes > URL - 更新为NAS的地址,即ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git。

  1. 官方文档:Synology知识中心与文档库 ↩︎ ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/19040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

据报导,SK海力士的HBM团队源自三星,暗示三星不幸失去HBM优势

最新科技动态显示,三星的高带宽记忆体(High Bandwidth Memory, HBM)技术尚未获得GPU巨头英伟达(NVIDIA)的认证,导致其落后于竞争对手SK海力士。这一挫折直接导致三星半导体部门负责人更迭。尽管三星官方否认…

使用swagger2做测试,报java.lang.NumberFormatException: For input string: ““ 的异常

文章目录 一、问题描述二、原因分析三、解决方案3.1、方案一&#xff1a;手动添加example值&#xff08;费时费力不推荐&#xff09;3.2、方案二&#xff1a;导入1.5.21(及之后)版本的swagger-models&#xff08;推荐&#xff09; 本文基于swagger2.9.2进行讲解 <!--swagge…

C# CryptoStream流的详解与示例

在当今数字时代&#xff0c;数据安全变得越来越重要。保护敏感信息免受未授权访问是每个开发者的责任。在C#中&#xff0c;使用CryptoStream流可以方便地对数据进行加密和解密。本文将详细介绍C# CryptoStream库的用法、功能以及它如何对数据进行加密和解密。 一、CryptoStrea…

理解和使用JSON Web Tokens(JWT)进行Web应用程序授权

理解和使用JSON Web Tokens(JWT)进行Web应用程序授权 如今,Web令牌是在网络中进行授权的一种非常流行的方式。JWT在Microsoft的背景下也变得非常流行,并且对我们今天构建应用程序的方式产生了一些其他影响。在本篇笔记中,我们将学习JWT是什么,以及如何在保护Web应用程序…

HTTP Digest Access Authentication Schema

HTTP Digest Access Authentication Schema 背景介绍ChallengeResponse摘要计算流程总结参考 背景 本文内容大多基于网上其他参考文章及资料整理后所得&#xff0c;并非原创&#xff0c;目的是为了需要时方便查看。 介绍 HTTP Digest Access Authentication Schema&#xff…

基础—SQL—DQL(数据查询语言)基础查询

一、引言 1、介绍&#xff1a; 分类全称描述DQL英文全称&#xff1a;Data Query Language(数据查询语言)主要是学习对数据库表中的记录进行查询的语句 2、讲解 日常的开发中或者对于一个正常的业务系统中&#xff0c;对于查询的操作次数是远远多于数据的增删改的频次。例如…

8. CSS弹性布局基础

第8章 弹性布局基础 CSS3引入了一个强大的布局模块——弹性布局&#xff08;Flexbox&#xff09;&#xff0c;它提供了一种更加高效、直观的方式来排列和对齐元素&#xff0c;使复杂布局的实现变得更加简单。本章将详细介绍弹性布局的基本概念和属性&#xff0c;并通过具体示例…

哪里能下载到合适的衣柜3D模型素材?

室内设计师在进行家居设计时&#xff0c;衣柜3D模型素材是非常重要的工具。那么&#xff0c;哪里能下载到合适的衣柜3D模型素材呢? 一、建e网&#xff1a; ①建e网是一个专注于3D模型素材分享的平台&#xff0c;上面可以找到大量的衣柜3D模型。 ②该网站提供的模型种类丰富&am…

闭包是什么?有什么特性?对页面有什么影响?

闭包是指在一个函数内部定义的函数&#xff0c;并且该函数可以访问到外部函数的变量。闭包可以将外部函数的变量保持在内存中&#xff0c;并且不会被释放。 闭包具有以下特性&#xff1a; 1. 函数内部定义的函数可以访问外部函数的变量。 2. 外部函数的变量可以保持在内存中&a…

Remix IDE 创建和部署第一个合约HelloWorld

Remix IDE 地址 https://remix.ethereum.org/ 流程步骤&#xff1a; 创建一个新文件 输入文件名保存 在文件资源管理器中&#xff0c;点击新建文件图标创建一个新文件&#xff0c;并给它命名。在 Remix 中&#xff0c;默认的文件扩展名是 .sol &#xff0c;如果文件名没有…

外企如何有效面对日益严格的跨境数据传输法律?

在当今这个数据驱动的时代&#xff0c;随着全球化步伐的加快&#xff0c;企业跨国界的数据交流已成为常态。但随之而来的&#xff0c;是各国政府对跨境数据传输日益严格的规定和监管&#xff0c;这让众多外资企业&#xff08;简称“外企”&#xff09;在享受全球市场红利的同时…

Spring Cache自定义缓存key和过期时间

一、自定义全局缓存key和双冒号替换 使用 Redis的客户端 Spring Cache时&#xff0c;会发现生成 key中会多出一个冒号&#xff0c;而且有一个空节点的存在。 查看源码可知&#xff0c;这是因为 Spring Cache默认生成key的策略就是通过两个冒号来拼接。 同时 Spring Cache缓存…

Kong网关的负载均衡

安装java环境 查询 java安装包 196 yum list java* 安装java8197 yum install -y java-1.8.0-openjdk.x86_64 检验java8是否安装成功。198 java -version2个tomcat准备 另外一个tomcat区别在于&#xff1a;配置文件。conf/server.xml 启动tomcat [rootlocalhost bin]# ./…

C++之单链表与双链表逆序实例(二百七十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

拥塞控制的微观行为与力学解释

本文以 tcptrace 图为基&#xff0c;描述传输的微观行为&#xff0c;并给出一个初中几何描述的压水井模型。 统计复用网络的拥塞控制&#xff0c;宏观看 inflight&#xff0c;微观看 pacing rate&#xff0c;宏观大方向不对&#xff0c;微观再正确也不行。 而网络的统计动力学…

AI 驱动的低代码平台-网易CodeWave 低代码平台 AI 智能化实践

一、实践背景&#xff1a; 随着低代码赛道的蓬勃发展&#xff0c;越来越多的低代码产品如雨后般春笋涌出开始进入市场&#xff0c;面对市场的考验&#xff0c;低代码平台也在面临两大问题&#xff1a; 定制开发的使用门槛太高&#xff0c;效率太低。低代码产品进入到企业当中…

错误信息:Traceback (most recent call last):

错误信息 Traceback (most recent call last): File "E:\python.learning\pythonDateExcavateTreat\数据挖掘课程设计\2_京东用户意向购买数据探索.py", line 74, in <module> df_ui df_ui.to_frame().reset_index() File "E:\python.learning\lib\site-…

决策树模型-预测用户是否购买某母婴产品

1&#xff0c;场景描述 假设我们是京东的数据分析师&#xff0c;负责分析母婴产品的购买行为。我们想预测用户是否会购买一款新上线的母婴产品。为了进行预测&#xff0c;我们将利用用户的历史购买数据、浏览行为和其他特征&#xff0c;通过决策树模型进行分析&#xff0c;并提…

猫狗分类识别模型建立②模型建立

一、导入依赖库 pip install opencv-python pip install numpy pip install tensorflow pip install keras 二、模型建立 pip install opencv-python pip install numpy pip install tensorflow pip install kerasimport os import xml.etree.ElementTree as ETimpor…

NSSCTF-Web题目4

[SWPUCTF 2021 新生赛]hardrce 1、题目 2、知识点 rce&#xff1a;远程代码执行、url取反编码 3、解题思路 打开题目 出现一段代码&#xff0c;审计源代码 题目需要我们通过get方式输入变量wllm的值 但是变量的值被过滤了&#xff0c;不能输入字母和\t、\n等值 所以我们需…