1.1subversion安裝
yum install -y subversion httpd
1.1.1服務的準備
使用cat /etc/service |grep svn 可以看到服務的默認端口3690
[root@master01 ~]# cat /etc/services |grep svn
svn 3690/tcp # Subversion
svn 3690/udp # Subversion
svnetworks 2973/tcp # SV Networks
svnetworks 2973/udp # SV Networks
svnet 3413/tcp # SpecView Networking
svnet 3413/udp # SpecView Networking
ml-svnet 4171/tcp # Maxlogic Supervisor Communication
mkdir /webdept 創建svn的主目錄
1.1.2 創建版本庫(項目分支)
svnadmin create /webdept/www.zhuifeng.cn
svnadmin create /webdept/www.ilinux.io
[root@master01 ~]# ll /webdept/www.zhuifeng.cn/
總用量 8
drwxr-xr-x. 2 root root 54 8月 22 19:21 conf
drwxr-sr-x. 6 root root 233 8月 22 19:21 db
-r--r--r--. 1 root root 2 8月 22 19:21 format
drwxr-xr-x. 2 root root 231 8月 22 19:21 hooks
drwxr-xr-x. 2 root root 41 8月 22 19:21 locks
-rw-r--r--. 1 root root 229 8月 22 19:21 README.txt
[root@master01 conf]# ls
authz passwd svnserve.conf
svnadmin create命令創建了分支的架構
conf下存放用戶的賬號密碼權限等配置文件
2.1.1svn運行方式之獨立運行模式
啟用svnserver.conf如下幾行
[root@master01 conf]# grep ^[a-z] svnserve.conf
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository #登錄提示語
在passwd里添加用戶和密碼
[root@master01 conf]# grep ^[^#] passwd
[users]
Make = 123456
MAN = 123456
top = 123456
在authz里定義用戶和用戶組權限
[root@master01 conf]# grep ^[^#] authz
[groups]
check = Make,MAN #定義check組
[/] #定義當前版本庫根目錄及www.zhuifeng.cn
top = rw
@check = r #定義check組權限
* = #定義其他人的權限,為空則沒有任何權限
2.1.2 運行svn
svnserve -d -r /webdept/ #會運行svn下所有分支,在目錄后指向某個分支可單獨運行那個分支
[root@master01 conf]# netstat -tunlp|grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 70390/svnserve
-d 以守護進程運行
-r 以root用戶運行
服務已啟動
2.1.3 建立測試頁面來提交代碼
mkdir /localsvn
cd /localsvn && touch 1.html 2.jsp 3.php
提交這三個頁面
svn import /root/localsvn/ file:///webdept/www.zhuifeng.cn/ -m "first edit"
-m 版本信息
2.1.4下載代碼
[root@master01 ~]# svn checkout svn://10.10.10.27/www.zhuifeng.cn/ downsource #downsource會在當前目錄下自動建立并將代碼down到此處
認證領域: <svn://10.10.10.27:3690> My First Repository
“root”的密碼:
認證領域: <svn://10.10.10.27:3690> My First Repository
用戶名: Make
“Make”的密碼:
-----------------------------------------------------------------------
注意! 你的密碼,對于認證域:
<svn://10.10.10.27:3690> My First Repository
只能明文保存在磁盤上! 如果可能的話,請考慮配置你的系統,讓 Subversion
可以保存加密后的密碼。請參閱文檔以獲得詳細信息。
你可以通過在“/root/.subversion/servers”中設置選項“store-plaintext-passwords”為“yes”或“no”,
來避免再次出現此警告。
-----------------------------------------------------------------------
保存未加密的密碼(yes/no)?no
A downsource/3.php
A downsource/2.jsp
A downsource/1.html
取出版本 1。
2.1.5寫數據并提交
echo "<h1>svn</h1>" > downsource/1.html
svn commit -m "second edit"
Make用戶沒有寫權限
按空格跳過切換top用戶提交
2.2svn的httpd運行
svn的web運行方式和獨立運行方式是不相關的
svn的httpd運行依賴httpd的mod_dav_svn.so模塊和mod_authz_svn.so模塊
yum install mod_dav_svn -y
ls -l /etc/httpd/modules/mod_dav_svn.so
ls -l /etc/httpd/modules/mod_authz_svn.so
vim /etc/httpd/conf.d/subversion.conf
<Location /webdept>
DAV svn
SVNParentPath /webdept #svn根目錄
AuthType Basic #Basic認證方式
AuthName "www.zhuifeng.cn website Dept" #認證顯示信息,提示信息
AuthUserFile /webdept/svn/passwd #用戶密碼文件
AuthzSVNAccessFile /webdept/svn/authz #訪問控制權限文件
Require valid-user #要求正式用戶,不能匿名
</Location>
復制粘貼請使用這個:
<Location /webdept>
DAV svn
SVNParentPath /webdept
AuthType Basic
AuthName "www.zhuifeng.cn website Dept"
AuthUserFile /webdept/svn/passwd
AuthzSVNAccessFile /webdept/svn/authz
Require valid-user
</Location>
mkdir /webdept/svn
htpasswd -c /webdept/svn/passwd user1 #apache創建認證用戶 ,第一次創建要加-c,第二次以后不需要
htpasswd /webdept/svn/passwd user2
htpasswd /webdept/svn/passwd user3
[root@master01 downsource]# cat /webdept/svn/passwd
user1:$apr1$zgqCz0ZE$kjkdFtzJEmGcjQC4rHZ2X.
user2:$apr1$g9SLwEkN$fpymAz51r6mUnLsXEqQEb1
user3:$apr1$6Cs9TpLO$asS/h2KMtnN.9MHs1nvNT0
[root@master01 downsource]# cat /webdept/svn/authz
[groups]
all = user1,user2
[/]
#user1 = rw
[www.zhuifeng.cn:/]
@all = rw
[www.ilinux.io:/]
user2 = rw
user3 = rw
啟動httpd
訪問http://10.10.10.27/webdept/www.zhuifeng.com
3.1svn正式使用方式TortoiseSVN,windows平臺的
安裝之后寫入http://10.10.10.27/webdept/www.zhuifeng.com
把 /webdept/www.zhuifeng.com的屬主組改apache
即可
4.1git
對于任何一個文件,在 Git 內都只有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。已提交表示該文件已經被安全地保存在本地數據庫中了;已修改表示修改了某個文件,但還沒有提交保存;已暫存表示把已修改的文件放在下次提交時要保存的清單中
基本的 Git 工作流程如下:
1.在工作目錄中修改某些文件。
2.對修改后的文件進行快照,然后保存到暫存區域。
3.提交更新,將保存在暫存區域的文件快照永久轉儲到 Git 目錄中。
4.1.1安裝git的server
yum install git -y
useradd -m git 創建git用戶
echo git:123456|chpasswd
su git 切換至git
cd 切換至家目錄
mkdir project.git 建立倉庫
[git@master01 project.git]$ git init --bare
初始化空的 Git 版本庫于 /home/git/project.git/
4.1.12 git的常用命令
git config --global user.name “name“ #設置全局用戶名
git config --global user.email mail #設置全局郵箱
git config --global --list #列出用戶全局設置
git add index.html #添加文件到暫存區
git commit -m “描述內容“ #提交文件到工作區
git status #查看工作區的狀態
git push #提交代碼到 git 服務器上
git pull #獲取代碼到本地
git log #查看操作日志
vim .gitignore #定義忽略文件
git reset --hard HEAD^ #git 版本回滾, HEAD 為當前版本,加一個為上一個,^為上上一個版本
git reflog # #獲取每次提交的 ID,可以使用--hard 根據提交的 ID 迚行版本回退
git reset --hard 5ae4b06 #回退到指定 id 的版本
git branch #查看當前所處的分支
git checkout -- file #從服務器更新某個那文件覆蓋本地的文件
4.1.2方法1
在客戶機上同樣安裝git,mkdir git
第一次使用時要配置git工作環境,要配置個人的用戶名稱和電子郵件地址
git config --global user.name "XXXX"
git config --global user.name "XXXX@admin.com"
vim /root/.gitconfig
此為全局配置,如果要只針對某個新項目可以這樣做
git clone http://10.10.10.27/xuegod/xuegod-web1.git
cd xuegod-web1
git config user.name "XXXX"
git config user.name "XXXX@admin.com"
或 vim .git/config
cd git
git clone git@10.10.10.27:/home/git/project.git/
echo "No.1" > 1.html
git add .
git commit -m "NO.1"
git remote add orgin git@10.10.10.27:/home/git/project.git/
git push origin master
回滾操作
刪除index.html
使用git reset --hard HEAD回滾到最新版
查看每次提交的id
[root@master01 xuegod-web1]# git reflog
a7ea0fd HEAD@{0}: commit (initial): add bbs
在服務器創建分支
[root@xuegod63 xuegod-web]# git branch bbs #創建一個分支
[root@xuegod63 xuegod-web]# git checkout bbs #切換到分支 bbs
[root@xuegod63 xuegod-web]# git branch #查看當前所處的分支
[root@xuegod63 xuegod-web]# vim a.txt #隨意在里面寫一些內容
[root@xuegod63 xuegod-web]# git add a.txt
[root@xuegod63 xuegod-web]# git commit -m "add a.txt“ #提交到暫存區中
[root@xuegod63 xuegod-web]# git push -u origin bbs #上傳到分支 bbs 分支上
方法2:windows的git工具
Git 中 pull 和 clone 的區別
clone 是本地沒有 repository 時,將遠程 repository 整個下載過來。
pull 是本地有 repository 時,將遠程 repository 里新的 commit 數據(如有的話)下載過來,并且與本地代碼merge。