版本控制是指對軟件開發過程當中各類程序代碼、配置文件及說明文檔等文件變動的管理,是軟件配置管理的核心思想之一。
版本控制最主要的功能就是追蹤文件的變動。它將何時、什麼人更改了文件的什麼內容等信息忠實地了記錄下來。每一次文件的改變,文件的版本號都將增長。除了記錄版本變動外,版本控制的另外一個重要功能是並行開發。軟件開發每每是多人協同做業,版本控制能夠有效地解決版本的同步以及不一樣開發者之間的開發通訊問題,提升協同開發的效率。並行開發中最多見的不一樣版本軟件的錯誤(Bug)修正問題也能夠經過版本控制中分支與合併的方法有效地解決。
具體來講,在每一項開發任務中,都須要首先設定開發基線,肯定各個配置項的開發初始版本,在開發過程當中,開發人員基於開發基線的版本,開發出所需的目標版本。當發生需求變動時,經過對變動的評估,肯定變動的影響範圍,對被影響的配置項的版本進行修改,根據變動的性質使配置項的版本樹繼續延伸或產生新的分支,造成新的目標版本,而對於不受變動影響的配置項則不該發產生變更。同時,應可以將變動所產生的對版本的影響進行記錄和跟蹤。必要時還能夠回退到之前的版本。例如當開發需求或需求變動被取消時,就須要有能力將版本回退到開發基線版本。在曾經出現過的季度升級包拆包和從新組包的過程當中,其實就是將部分配置項的版本回退到開發基線,將對應不一樣需求的不一樣分支從新組合歸併,造成新的升級包版本。
版本控制是軟件配置管理的核心功能。全部置於配置庫中的元素都應自動予以版本的標識,並保證版本命名的惟一性。版本在生成過程當中,自動依照設定的使用模型自動分支、演進。除了系統自動記錄的版本信息之外,爲了配合軟件開發流程的各個階段。還須要定義、收集一些元數據來記錄版本的輔助信息和規範開發流程,併爲從此對軟件過程的度量作好準備。固然若是選用的工具支持,這些輔助數據將能直接統計出過程數據,從而方便軟件過程改進活動的進行。對於配置庫中的各個基線控制項,應該根據其基線的位置和狀態來設置相應的訪問權限。通常來講,對於基線版本以前的各個版本都應處於被鎖定的狀態,如須要對它們進行變動,則應按照變動控制的流程來進行操做。python
經常使用的版本控制工具:linux
//關閉防火牆 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# vim /etc/selinux/config **//將第六行中的 enforcing 改成 disabled** # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled [root@localhost ~]# setenforce 0 //配置網絡yum源 [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo --2018-08-10 12:07:17-- http://mirrors.163.com/.help/CentOS7-Base-163.repo Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251 Connecting to mirrors.163.com (mirrors.163.com)|59.111.0.251|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1572 (1.5K) [application/octet-stream] Saving to: ‘CentOS7-Base-163.repo’ 100%[=================================>] 1,572 --.-K/s in 0s 2018-08-10 12:07:17 (191 MB/s) - ‘CentOS7-Base-163.repo’ saved [1572/1572] [root@localhost yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo [root@localhost yum.repos.d]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo [root@localhost yum.repos.d]# yum -y install epel-release ……下載過程略 //安裝git [root@localhost ~]# yum -y install git ……下載過程略 //安裝依賴包 [root@localhost ~]# yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python ……下載過程略 //啓動postfix服務並設置開機自啓 [root@localhost ~]# systemctl enable postfix [root@localhost ~]# systemctl restart postfix //下載gitlab的rpm包(rpm包有點大,建議提早下好,直接上傳便可。) [root@localhost ~]# cd /usr/src/ [root@localhost src]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.2.1-ce.0.el7.x86_64.rpm ……下載過程略 [root@localhost src]# ls debug gitlab-ce-11.2.1-ce.0.el7.x86_64.rpm kernels //安裝gitlab [root@localhost src]# rpm -ivh gitlab-ce-11.2.1-ce.0.el7.x86_64.rpm warning: gitlab-ce-11.2.1-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY Preparing... (1################################# [100%] Updating / installing... 1:gitlab-ce-11.2.1-ce.0.el7 ( ################################# [100%] It looks like GitLab has not been configured yet; skipping the upgrade script. *. *. *** *** ***** ***** .****** ******* ******** ******** ,,,,,,,,,***********,,,,,,,,, ,,,,,,,,,,,*********,,,,,,,,,,, .,,,,,,,,,,,*******,,,,,,,,,,,, ,,,,,,,,,*****,,,,,,,,,. ,,,,,,,****,,,,,, .,,,***,,,, ,*,. _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/ Thank you for installing GitLab! GitLab was unable to detect a valid hostname for your instance. Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file. Then, you can start your GitLab instance by running the following command: sudo gitlab-ctl reconfigure For a comprehensive list of configuration options please see the Omnibus Gi tLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md //修改配置文件 [root@localhost ~]# vim /etc/gitlab/gitlab.rb ...... ...... external_url 'http://192.168.206.129' //將此處設爲gitlab的服務器ip地址亦或域名 ...... ...... //重載配置文件並重啓gitlab [root@localhost ~]# gitlab-ctl reconfigure ……過程略 [root@localhost ~]# gitlab-ctl restart ……過程略 //查看服務端口(gitlab服務端口有點多) [root@localhost ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:9100 *:* LISTEN 0 128 127.0.0.1:9229 *:* LISTEN 0 128 127.0.0.1:8080 *:* LISTEN 0 128 *:80 *:* LISTEN 0 128 127.0.0.1:9168 *:* LISTEN 0 128 127.0.0.1:8082 *:* LISTEN 0 128 127.0.0.1:9236 *:* LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:8060 *:* LISTEN 0 128 127.0.0.1:9121 *:* LISTEN 0 128 127.0.0.1:9090 *:* LISTEN 0 128 127.0.0.1:9187 *:* LISTEN 0 128 127.0.0.1:9093 *:* LISTEN 0 128 ::1:9168 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::9094 :::* //下面操做可作可不作,無任何影響 //破解管理員密碼(在瀏覽器上訪問時還會再從新設置密碼!) [root@localhost ~]# gitlab-rails console production ------------------------------------------------------------------------------------- GitLab: 11.2.1 (2d6c1c6) GitLab Shell: 8.1.1 postgresql: 9.6.8 ------------------------------------------------------------------------------------- Loading production environment (Rails 4.2.10) irb(main):001:0> user = User.where(id: 1).first //id爲1的是超級管理員 => #<User id:1 @root> irb(main):002:0> user.password = 'abcde123!' //密碼必須至少8個字符 => "wangqing123!" irb(main):003:0> user.password_confirmation = 'shicl123!' irb(main):004:0> user.save! //保存修改,若無問題將返回true Enqueued ActionMailer::DeliveryJob (Job ID: 7feb0464-15aa-4151-be94-2e657a65494e) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1 => true irb(main):005:0> exit //退出
若是出現紫色頁面,多是httpd的80端口衝突了 關閉端口就行git
[root@wan ~]# systemctl httpd stop Unknown operation 'httpd'. [root@wan ~]# apachectl stop
首先會從新設置密碼
而後登錄帳戶爲root,密碼是你上一步設置的sql