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到此处
认证领域: My First Repository
“root”的密码:
认证领域: My First Repository
用户名: Make
“Make”的密码:
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
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 "
svn
" > downsource/1.htmlsvn 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
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 #要求正式用户,不能匿名
复制粘贴请使用这个:
DAV svn
SVNParentPath /webdept
AuthType Basic
AuthName "www.zhuifeng.cn website Dept"
AuthUserFile /webdept/svn/passwd
AuthzSVNAccessFile /webdept/svn/authz
Require valid-user
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 "[email protected]"
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 "[email protected]"
或 vim .git/config
cd git
git clone [email protected]:/home/git/project.git/
echo "No.1" > 1.html
git add .
git commit -m "NO.1"
git remote add orgin [email protected]:/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。