Subversion安装、基本操作、多人协同工作与Github使用命令
案例1:Subversion基本操作
步骤一:安装Subversion服务器
1、 YUM安装subversion软件
yum -y install subversion
rpm -q subversion
输出:subversion-1.7.14-10.el7.x86_64
2、 创建版本库(创建后已经有相应的配置了)
mkdir /var/svn/
svnadmin create /var/svn/project/
ls /var/svn/project/
输出: conf/ db/ format hooks/ locks/ README.txt
3、 本地导入初始化数据(测试)
cd /usr/lib/systemd/system/ svn import . file:///var/svn/project/ -m
“Init Data”
4、修改配置文件
vim /var/svn/project/conf/svnserve.conf
anon-access = none #19行,匿名无任何权限
auth-access = write #20行,有效账户可写
password-db = passwd #27行,密码文件
authz-db = authz #34行,ACL访问控制列表文件
5、创建账户与密码
vim /var/svn/project/conf/passwd
[users]
harry = 123456 #用户名和密码
6、定义ACL访问控制
vim /var/svn/project/conf/authz
[/] //定义ACL访问控制
harry = rw //用户对项目根路径可读可写
7、启动服务
svnserve -d -r /var/svn/project
# -d 以守护进程方式运行;-r设置一个虚拟路径,默认客户端要指定绝对路径访问库
netstat -nutlp |grep svnserve
输出:tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 4043/svnserve
备注:启动服务也可以使用svnserve -d启动,但客户端访问时需要指定绝
对路径(svn://服务器IP/var/svn/project)。
步骤二:客户端测试(本机测试也行)
1)将服务器上的代码下载到本地
cd /tmp svn --username harry --password 123456 co svn://127.0.0.1/
code
#建立本地副本,从服务器本机(ip)上co下载代码到本地code目录,用户名harry,密码123456
输出:Store password unencrypted (yes/no)? yes //提示是>否保存密码
cd /tmp/code
vim user.slice //挑选任意文件修改其内容
svn ci -m "modify user" //将本地修改的数据同步到服务器,-m是备注
svn update //将服务器上新的数据同步到本地
svn info svn://192.168.2.100 //查看版本仓库基本信息
svn log svn://192.168.2.100 //查看版本仓库的日志
echo "test" > test.sh //本地新建一个文件
svn ci -m "new file" //提交失败,该文件不被svn管理
svn add test.sh //将文件或目录加入版本控制
svn ci -m "new file" //再次提交,成功
svn mkdir subdir //创建子目录
svn rm timers.target //使用svn删除文件
svn ci -m "xxx" //提交一次代码
vim umount.target //任意修改本地的一个文件
svn diff //查看所有文件的差异
svn diff umount.target //仅查看某一个文件的差异
svn cat svn://192.168.2.100/reboot.target //查看服务器文件的内容
sed -i 'd' tmp.mount //删除文件所有内容,但未提交
svn revert tmp.mount //还原tmp.mount文件
rm -rf *.target //任意删除若干文件
svn update //还原
sed -i '1a #test###' tuned //修改本地副本中的代码文件
svn ci -m "xxx" //提交代码
svn merge -r7:2 tuned //将文件从版本7还原到版本2
案例2:使用Subversion协同工作
步骤一:多人协同工作
1、两用户修改相同文件的不同行
svn ci -m “modified” //提交失败
报:svn: File ‘/user.slice’ is out of date(过期)
svn update //提示失败后,先更新再提交即>可
svn ci -m “modified” //提交成功
2、两用户修改相同文件的相同行
svn ci -m “modified”
报:svn: File ‘/tuned.service’ is out of date(过期)
svn update //出现冲突,需要解决
报:(s) show all options:p //选择先标记p,随后解决
mv tuned.service.mine tuned.service //修改文件名
rm -rf tuned.service.r10 //删除有问题的文件
svn ci -m “modified” //解决冲突
步骤二:使用dump指令备份版本库数据
svnadmin dump /var/svn/project > project.bak //备份
svnadmin create /var/svn/project2 //新建空仓库
svnadmin load /var/svn/project2 < project.bak //还原
案例3:Github使用命令提交代码
yum -y install git
git clone https://github.com /账户名称/仓库名称clone指令用于将服务器仓库中的资料打包下载到本地
cd 仓库名称
任意修改文件,或新建文件
git add . #add添加新文件
git commit -m “test”
git push #commit和push实现提交代码的功能
git pull #pull更新,类似于svn update