代码管理系统简介与部署

代码管理系统简介与部署

本章资源请访问:
https://download.csdn.net/download/weixin_54373617/19404805

技能目标:

  • 了解各软件版本控制系统
  • 掌握各软件版本控制系统的安装与部署

案例分析

案例概述

在开发一个项目时,如果只有几十行代码或几百行代码时维护还算简单,但是当代码数量达到一定程度或两三个人共同开发一个项目时,就很容易会出现代码混乱、冲突、排错难等问题。当代码编写完成以后发现整个项目运行不了时,提交的代码也无法确认到责任人, 导致维护项目时需要花费数倍的时间。为解决上述问题,版本控制系统应运而生。
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

案例前置知识点

1. 常见的版本控制系统介绍

Git 是一个开源的分布式版本控制系统,用于有效、高速的处理版本控制,从很小到非常大的项目都支持。一个原始 Git 版本仓库,可以让其他主机克隆这个原始版本仓库,从而使得一个 Git 版本仓库可以同时分布到不同的主机上,并且每台主机的版本库都是一样的, 并没有主次之分,极大的保证了数据的安全性,并使得用户能够自主选择 Git 服务器推送文件。作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念。每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而设计的一个开放源码的版本控制系统,是作为一种过渡方案用来替代 BitKeeper。BitKeeper 一直是 Linux 内核开发人员在全球使用的主要源代码工具。因为开放源码社区中有些人认为 BitKeeper 的许可证并不适合开放源码社区的工作,所以 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初研发 Git 的目的是为了辅助 Linux 内核开发,但目前在很多其他自由软件项目中也使用了 Git。

GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。GitHub 可以提供给用户空间创建 Git 仓储,保存用户的一些数据文档或者代码等。GitHub 作为开源代码库以及版本控制系统,目前拥有 140 多万开发者用户。随着越来越多的应用程序转移到了云上,GitHub 已经成为了管理软件开发以及发现已有代码的首选方法。GitHub 可以托管各种 Git 库,并提供一个 Web 界面,但与其它像 SourceForge 或 Google Code 这样的服务不同,GitHub 的独特卖点在于从另外一个项目进行分支的简易性。

GitLab 是一个基于 Git 的项目管理软件,用于仓库管理系统的开源项目。使用 Git 作为代码管理工具,并在此基础上搭建起来 Web 服务。Git、Gitlab、Github 都是基于 Git 的,可以说是 Git 的衍生品。

Subversion 英文全称为 Apache Subversion(简称 SVN),是一个开放源代码的版本控制系统。相较于 RCS、CVS,Subversion 采用了分支管理系统,其设计目标就是取代CVS。互联网上很多版本控制服务都是从 CVS 转移到 Subversion 的。

2. Git、Subversion 功能特性

Git 不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性。例如大多数的分布式版本控制系统只会记录每次文件的变化,它们只关心文件的内容变化差异,而 Git 则是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快照,而非仅记录差异内 容,并且使用 SHA-1 加密算法保证数据的完整性。从一般开发者的角度来看,Git 有以下功能:
 克隆数据库版本:从服务器上克隆数据库(包括代码和版本信息)到本机上;

  • 提交代码:在本机自己创建的分支上提交代码;

  • 合并分支:在本机上合并分支;

  • 拉取合并分支:新建一个分支,把服务器上最新版的代码 Fetch 下来,然后跟自己的主分支合并;

  • 代码冲突解决:一般开发者之间解决冲突的方法是,开发者可以使用 pull 命令拉取代码,解决冲突,解决完冲突之后再向主开发者提交补丁。
    Subversion 属于传统的版本控制系统,以下是 Subversion 功能特性:

  • 统一的版本号:SVN 在任何一次提交时,都会对所有文件增加一个新的版本号, 版本号相同的文件才能构成一个项目软件版本;

  • 原子提交:一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏;

  • 版本记录:重命名、复制、删除文件等动作都保存在版本历史记录当中。对于二进制文件,使用了节省空间的保存方法(简单的理解,就是只保存和上一版本不同之处)。当目录也有版本历史或者整个目录被移动或者复制,能够保留全部版本记录;

  • 开销:分支的开销非常小;

  • 元数据管理:每个目录或文件都可以定义属性(Property),它是一些隐藏的键值对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内;

  • 格式支持:支持 FSFS 和 Berkeley DB 两种资料库格式。

案例环境

1. 本案例环境

本案例环境如下表所示。

主机 操作系统 IP地址 配置 主要软件
服务端 CentOS 7 192.168.10.101 2C/4G Git、Gitlab、SVN
客户端 CentOS 7 192.168.10.102 1C/1G Git、SVN

2. 案例需求

安装部署 Git、Gitlab、SVN 等几种常见的代码管理控制系统。

3. 案例实现思路

(1) 准备案例实现环境。

(2) 部署 Git 版本控制系统。

(3) 部署 Gitlab 版本控制系统。

(4) 部署 Subversion 版本控制系统。

案例实施

部署 Git 服务器

1. 系统环境准备

所有服务器都执行以下操作

systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
setenforce 0

2. 使用 YUM 安装 Git

#所有服务器都需要安装
yum install -y git     

创建 Git 版本仓库,一般要以.git 为后缀, 服务端操作

mkdir kcs18.git
useradd git
passwd git
更改用户 git 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

chown git:git kcs18.git/
cd kcs18.git/
git --bare init
初始化空的 Git 版本库于 /root/kcs18.git/

以下操作都在客户端进行

此时,Git 服务器已经部署好,但用户还不能向服务器推送数据,也不能克隆 Git 版本仓库。要想实现上述功能,需要在服务器上开放至少一种支持 Git 的协议,比如: HTTP/HTTPS/SSH 等。现在使用最多的就是 HTTPS 和 SSH,

使用 SSH 协议。切换至 Git 客户端来生成 SSH 密钥。

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CBJHCdD13wrtbzQqrP/HpCt3mFELtlT+H+R+01FgjmM root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|.oo++.           |
|  .o..    .   o  |
|  . . .  o   + . |
|   . . ++.o E o .|
|      ooS+.+ +  .|
|       oo.= . o. |
|     .  oX . o .o|
|      + *.=   o.o|
|    .o.=o=.    ..|
+----[SHA256]-----+


ssh-copy-id 192.168.10.101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.10.101 (192.168.10.101)' can't be established.
ECDSA key fingerprint is SHA256:2fQLgiER9lL5D2sIHiKrcE9C9lAc3IRuu4+kyZIGMR4.
ECDSA key fingerprint is MD5:14:58:01:3a:bb:1c:72:e1:1f:21:14:4e:ba:b5:ba:32.
Are you sure you want to continue connecting (yes/no)? yes  
/usr/bin/ssh-copy-id: 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在日常办公中有许多常用的个人数据,如朋友电话、邮件地址、日程安排、日常记事、文件上传和下载,这些都可以用一个个人信息管理系统进行管理。个人信息管理系统可以内置于手掌上的数字处理器,以提供电子名片、便条、行程管理等功能。本项目基于B/S设计,也可以发布到网上,用户可以随时存取个人信息。 用户可以在系统中任意添加、修改、删除个人数据,包括个人的基本信息、个人通讯录、日程安排、个人文件管理。 要实现的功能包括四个方面: (1)登录与注册 系统的登录和注册功能。 (2)个人基本信息管理模块 系统中对个人基本信息的管理包括:个人的姓名、性别、出生日期、民族、学历、职称、登录名、密码、电话、家庭住址等。 (2)用户个人通讯录模块 系统的个人通讯录是保存了个人的通讯录信息,包括自己联系人的姓名、电话、邮箱、工作单位、地址、QQ等。可以自由添加联系人的信息,查询或删除联系人。 (3)日程安排模块 日程模块记录自己的活动安排或者其它有关事项,如添加从某一时间到另一时间要做什么事,日程标题、内容、开始时间、结束时间。可以自由查询,修改,删除。 (4)个人文件管理模块 该模块实现用户在网上存储临时文件的功能。用户可以新建文件夹,修改、删除、移动文件夹;上传文件、修改文件名、下载文件、删除文件、移动文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxiaoyouyouj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值