# :-: linux系統svn
* 適合centos linux使用,其他公司版本的linux未測試
* 源代碼的管理,為了解決在軟件開發過程中,由源代碼引發的各種蛋疼、繁瑣的問題
* svn 分兩個版本:
* Subversion 服務端,安裝在linux里,管理svn
* TortoiseSVN 客戶端,安裝在windows里
> 源代碼會引發哪些問題?
* 無法后悔:做錯了一個操作后,沒有后悔藥可以吃
* 版本備份:費空間、費時間
* 版本混亂:因版本備份過多造成混亂,難于找回正確的想要的版本
* 代碼沖突:多人操作同一個文件(團隊開發中的常見問題)
* 權限控制:無法對源代碼進行精確的權限控制
* 追究責任:出現了嚴重的BUG,無法得知是誰干的,容易耍賴
---
### :-: 一、安裝svn
#### 1、安裝命令
* centos 自帶yum方法,使用yum方法安裝svn
> yum -y install subversion
### 2、指定svn版本庫目錄
* mkdir 新建目錄
* svnserve 設置svn版本庫
> mkdir /svndata
> svnserve -d -r /svndata
### 3、創建版本庫
* name 是你的項目的目錄名稱
> svnadmin create /svndata/name
---
### :-: 二、配置svn
#### 1、配置`svnserve.conf`文件
* 進入項目里的conf目錄
> cd /svndata/name/conf
* 打開svnserve.conf文件,vi命令是系統自帶的
> vi svnserve.conf
* 以下配置放在svnserve.conf文件里的20行后面
```php
anon-access=none
auth-access=write
password-db=passwd
```
* 保存文件
#### 2、配置`passwd`文件
* 打開passwd文件,也在conf目錄下
> vi passwd
* 在后面一行輸入賬號=密碼
> ouyangke=123456
* 保存文件
#### 3、連接svn
* 完成以上配置,就可以用windows電腦連接svn
* windows電腦必須安裝svn軟件
* windows電腦-》右擊svn檢出-》輸入svn://ip地址/name-》彈出賬號密碼輸入框
---
### :-: 三、svn同步腳本
* 同步的目的是:更新代碼后,服務器中的項目自動更新同步
#### 1、拷貝項目
* 拷貝要同步的項目,到網站目錄文件中
> svn co svn://localhost/name /www/name
#### 2、建立同步腳本
* 先復制一份同步腳本
> cd /svndata/name/hooks/
> cp post-commit.tmpl post-commit
#### 3、編輯同步腳本
> vi post-commit
* BASEPATH是拷貝的項目目錄
```php
REPOS="$1"
REV="$2"
BASEPATH=/www/name
WEBPATH="$BASEPATH/"
export LANG=zh_CN.UTF-8
svn update $WEBPATH --username ouyangke --password 123456 --no-auth-cache
```
#### 4、執行腳本
* 執行腳本
> chmod +x post-commit
* 關閉svn
> killall svnserve
* 開啟svn
> svnserve -d -r /svndata
*****
### :-: 四、配置文件介紹
#### 1、`svnserve.conf`文件
* 該文件有5個配置項:
```php
anon-access:
控制非鑒權用戶訪問版本庫的權限。
取值范圍為"write"、"read"和"none"。
即"write"為可讀可寫,"read"為只讀,"none"表示無訪問權限。
缺省值(默認):read
```
```php
auth-access:
控制鑒權用戶訪問版本庫的權限。
取值范圍為"write"、"read"和"none"。
即"write"為可讀可寫,"read"為只讀,"none"表示無訪問權限。
缺省值(默認):write
```
```php
password-db:
指定賬號密碼的文件名。
除非指定絕對路徑,否則文件位置為相對conf目錄的相對路徑。
缺省值(默認):passwd
```
```php
authz-db:
指定權限配置文件名,通過該文件可以實現以路徑為基礎的訪問控制。
除非指定絕對路徑,否則文件位置為相對conf目錄的相對路徑。
缺省值(默認):authz
```
```php
realm:
指定版本庫的認證域,即在登錄時提示的認證域名稱。
若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件。
缺省值(默認):一個UUID(Universal Unique IDentifier,全局唯一標示)。
```
```php
示例:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /svndata/name/
```
#### 2、`passwd`文件
* 該文件設置用戶的賬號密碼
* 密碼為未經過任何處理的明文
```php
示例:
ouyangke=123456 // 歐陽克的賬號:ouyangke 密碼:123456
huangrong=123456 // 黃蓉的賬號:huangrong 密碼:123456
```
#### 3、`authz`文件
* 該文件設置組和用戶的權限
* / 是svn根目錄
* ouyangke 是賬號
* r 只讀
* rw 讀寫
* *= 其他用戶無權限
```php
[/]
ouyangke=rw
*=
```
---
* 啟動 svn
> svnserve -d -r /svndata/svn
* 關閉 svn
> killall svnserve
* 刪除版本庫
> 很多人不知道怎么刪除其中一個svn版本庫,直接刪除庫目錄
* 卸載svn
> rpm -e subversion
*****
### :-: 五、linux系統編輯文件
* 有時候,我們放假,在外地玩,可能突然代碼有問題,這個時候,找臺電腦,需要安裝很多軟件,我們就需要在線編寫代碼。
* 很多平臺都提供了 手機app連接 linux系統的功能。我們以此作為媒介。
* 如果你的代碼沒有svn,也可以使用 寶塔或wdcp面板,直接線上修改。
> 備:`linux`服務器安裝了`Subversion`,都可以使用此方法
1、連接svn
```linux
svn checkout svn://127.0.0.1/svndata/name /www/name
```
2、更新文件
```linux
# 進入name目錄下
svn update
```
3、新增文件
```linux
# 文件名也可以是一個目錄+文件名
svn add 文件名
```
4、上傳文件
```linux
svn commit -m `備注` 文件名
```
* 新文件,必須先新增文件
* 如果上傳文件失敗,執行linux命令,改變環境變量:
* export SVN_EDITOR=vim
- 序言
- PHP基礎
- 認識PHP
- 環境安裝
- PHP語法
- 流程控制
- PHP數組
- PHP函數
- PHP類與對象
- PHP命名空間
- PHP7新特性
- PHP方法庫
- PHP交互
- 前后端交互
- 項目常規開發流程
- MySQL數據庫
- 會話控制
- Ajax分頁技術
- 細說函數
- 類與對象
- 對象進階
- 類與對象進階
- OOP面向對象
- 設計模式
- 路由與模板引擎
- 異常類
- PHP爬蟲
- PHP抓取函數
- PHP匹配函數
- 正則表達式
- PHP字符串函數
- 抓取實戰
- PHP接口
- 了解接口
- PHP插件
- PHPSpreadsheet
- ThinkPHP6
- 安裝
- 架構
- 數據庫
- 數據庫操作
- 視圖
- 模版
- 模型
- 雜項
- 命令行
- 交互
- 微信小程序
- 介紹
- 配置
- 組件
- 交互
- API
- 其他知識
- 百度小程序
- 介紹
- 配置
- 組件
- 交互
- API
- 其他知識
- Linux
- 服務器上線流程
- 安裝svn
- MySQL
- 認識MySQL
- MySQL函數
- 雜項
- composer依賴管理工具