阿里云ubuntu 创建svn服务器及SVN服务器的command
来源:互联网 发布:巢湖学院网络教学平台 编辑:程序博客网 时间:2024/06/03 20:09
ubuntu 创建svn服务器
1.SubVersion服务安装
sudo apt-get install subversionsudo apt-get install libapache2-svn
2.服务器配置
2.1相关用户、组的设定
将自己和“www-data”(Apache 用户)加入组subversion中
sudo addgroup subversionsudo usermod -G subversion -a www-data
看下结果:
cat /etc/group|grep subversion
这里注意,需要注销然后再登录以便您能够成为 subversion 组的一员,然后就可以执行签入文件(Check in,也称提交文件)的操作了
仓库位置我们就放在/home/svn下吧(注意,在阿里云里数据最好放在数据盘里,不要放在系统盘,系统盘太小):
sudo mkdir /home/svn
2.2配置subversion
编辑/etc/subversion/config 文件,修改相关设置(笔者基本上是默认设置,没做任何修改)
### Section for configuring miscelleneous Subversion options.[miscellany]global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store### Set mime-types-file to a MIME type registry file, used to### provide hints to Subversion's MIME type auto-detection### algorithm.# mime-types-file = /path/to/mime.types### Set enable-auto-props to 'yes' to enable automatic properties### for 'svn add' and 'svn import', it defaults to 'no'.### Automatic properties are defined in the section 'auto-props'.enable-auto-props = yes### Section for configuring automatic properties.[auto-props]### The format of the entries is:### file-name-pattern = propname[=value][;propname[=value]...]### The file-name-pattern can contain wildcards (such as '*' and### '?'). All entries which match (case-insensitively) will be### applied to the file. Note that auto-props functionality### must be enabled, which is typically done by setting the### 'enable-auto-props' option.*.c = svn:eol-style=native*.cpp = svn:eol-style=native*.h = svn:eol-style=native*.dsp = svn:eol-style=CRLF*.dsw = svn:eol-style=CRLF*.sh = svn:eol-style=native;svn:executable*.txt = svn:eol-style=native*.png = svn:mime-type=image/png*.jpg = svn:mime-type=image/jpegMakefile = svn:eol-style=native*.php = svn:keywords=Id Rev Date URL Revision Author
global-ignores是提交时忽略的文件类型,启用auto-props后,让subversion自动添加Id,Revision等keywords
这样就可以使用svn的keywords了。特别是eclipse里就方便多了。设置一下就可以使用
$$Id$$、$$Reversion $$、$$Date $$、$$Author$$ 、$$URL$$作为注释模板的内容,方便极了。
如果在客户端访问subversion版本库时出现这个错误:
svnserve.conf:102: Option expected
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件。
要避免出现这个错误,应该在去掉这些行前的#时,也要顺手去掉前面的空格。
3.apache mod_dav_svn 配置
通过 WebDAV 协议访问(http://)
关于WebDAV :
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
编辑 /etc/apache2/mods-available/dav_svn.conf :
root@hywd:/etc/apache2/mods-available# cat dav_svn.conf
# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
#
# NOTE: for a setup with multiple vhosts, you will want to do this
# configuration in /etc/apache2/sites-available/*, not here.
# <Location URL> ... </Location>
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.
<Location /svn>
#enable the repository
DAV svn
# Set this to the path to your repository
#SVNPath /home/svn/vod
# Alternatively, use SVNParentPath if you have multiple repositories under
# under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
# You need either SVNPath and SVNParentPath, but not both.
#用这个,以便放多个repository
SVNParentPath /home/svn
# Basic Authentication is repository-wide. It is not secure unless
# you are using https. See the 'htpasswd' command to create and
# manage the password file - and the documentation for the
# 'auth_basic' and 'authn_file' modules, which you will need for this
# (enable them with 'a2enmod').
AuthType Basic
AuthName "Subversion Repository"
#指定基本用户验证的密码文件存放位置
AuthUserFile /etc/subversion/dav_svn.passwd
# To enable authorization via mod_authz_svn
#mod_authz_svn配置文件的位置, 有
<IfModule mod_authz_svn.c>
AuthzSVNAccessFile /etc/subversion/dav_svn.authz
</IfModule>
# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'
# module (enable it with 'a2enmod').
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
重启 Apache 2 Web 服务器
sudo /etc/init.d/apache2 restart
4.创建 SVN 文件仓库
cd /home/svnsudo mkdir myproject
#更改版本库所属用户、组
sudo chown -R root:subversion myprojectsudo svnadmin create /home/svn/myproject
#赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
sudo chmod -R g+rws myproject
5.密码文件dav_svn.passwd的创建
sudo htpasswd -c /etc/subversion/dav_svn.passwd user_name
它会提示你输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/etc/subversion/dav_svn.passwd 文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:
sudo htpasswd /etc/subversion/dav_svn.passwd other_user_name
6.授权配置文件dav_svn.authz (该文件如果没有,就自己创建)
这里我指定了两个组:管理员组和测试组,指定了两个仓库(vod 、 ThinkPHP 和ftpuserms)的权限 。
vod仓库下管理员组设置为读写权限,测试组只有读的权限
ThinkPHP仓库下管理员组设置为读写权限,测试组只有读的权限
定义ftpuserms储存库下test目录的访问权限:
禁止所有用户访问,星号代表所有用户,权限为空代表没有任何权限
打开test3用户的读权限,打开administrator组的读写权限
[groups]administrator=admin,yuantester=test1,test2,test3[vod:/]@administrator=rwtester=r[ThinkPHP:/]@administrator=rwtester=r[ftpuserms:/test]@administrator=rw*=test3=r
启动SVN服务器:
killall svnserve; svnserve -d -r /home/svn/
您可以通过下面的命令来访问文件仓库:
svn co http://hostname/svn/myproject myproject --username user_name --password passwd
如果在Check in的时候遇到如下错误:
Can’t open ‘/home/svn/myproject/db/txn-current-lock’: Permission denied
查看txn-current-lock文件的权限和用户以及组信息,应该类似于:
ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr– 1 root subversion 0 2009-06-18 15:33 txn-current-lock
除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:
sudo chown -R root:subversion myproject
参考文章:
http://ihacklog.com/post/ubuntu-svn-setup.html
SVN服务器常用的command
1.svn状态:
svns tatus path
(M:修改的文件,?:新添加的文件,D:删除的文件,U:更新文件);
svns tatus -v path
显示该目录下面所有的文件和子目录状态
2.svn信息(主要可以看出svn的版本号):svn info ;
3.查看svn log:svn log -ln(n个连续的log)
svn log test.php
显示test.php文件的所有修改记录,及其版本号的变化
4.从svn中拿下数据:svn checkout (source address) . (checkout可以简写成co);
5.数据更新:svn update(每次update之后会得到一个最新的版本号);
update的三种用法:
第一:svn update
第二:svn update -r m(指的是版本号)path(还原到m版本)
第三:svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
6.svn添加文件:svn add test.php;
在添加一个新的文件夹的时候,提交之前需要svnadd file,但是没有commit之前,test.php只在本地存在,add只是给test.php做一个标记而已。
7.svn删除文件:svn delete file;
8.svn提交(需要著名文件修改的地方):svn commit path -m'~message'
9.svn重命名命令:svn mv file filename(不能直接用mv命令,因为先前的file文件已经在版本控制之内了)
11.svn log -r12
12为版本号
svn log -vr12
的详细信息,你可以得到版本号为12的详细信息。
包括路径和被修改的时间
svn update -r12
回滚到版本号为12的版本
update下来之后这个已经在版本控制之内,不能进行提交,所以你要做的事情就是讲这个文件重新导入svn
svn mv sourcefilename z
svn export z sourcefilename
12.svn diff -r m:n test.php
比较m和n两个版本下的test.php比较差异
13.svn merge -r m:n test.php
合并m和n的差异合并到当前文档,但是一般会差程差异。
14.svn help
svn帮助
上面是svn常见的命令
下面是一些不经常用的命令
15. 版本库下的文件和目录列表 svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svnls
16.创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
1、mk dir PATH…
2、mk dir URL…
17.创建版本控制的目录。
1、每一个以工作副本PATH指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。
18、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件(恢复大部份的本地修改)。revert:
用法:revert PATH…
注意:本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录 代码库URL变更
19.svn switch (sw):
更新工作副本至不同的URL。
用法:1、switch URL[PATH]
2、switch–relocate FROM TO [PATH...]
注意:1、更新你的工作副本,映射到一个新的URL,其行为跟“svnupdate”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
20.解决冲突
svnresolved: 移除工作副本的目录或文件的“冲突”状态。
用法:resolved PATH…
注意:本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让PATH可以再次提交。
21、输出指定文件或URL的内容。
svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svncat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果 是可以提交的)
虽然svn提供了很好的安全机制,但是在操作的时候要非常小心。如果你一旦删除了某一个文件,一旦提交上去,svn版本库上相应的文件也删除。导致的结果就是你的workmate一旦update之后你workmate的本地副本同样会删除,这是一个很危险的事情。
- 阿里云ubuntu 创建svn服务器及SVN服务器的command
- 阿里云服务器ubuntu创建SVN版本控制服务器
- 阿里云Ubuntu系统搭建SVN服务器
- 阿里云搭建SVN服务器
- 阿里云搭建SVN服务器
- 阿里云搭建SVN服务器
- 阿里云搭建SVN服务器
- (阿里云服务器)Ubuntu系统下配置自己的SVN服务器
- 基于阿里云服务器搭建SVN服务器
- 基于阿里云服务器搭建SVN服务器
- 阿里云服务器搭建SVN服务器
- 阿里云服务器搭建SVN教程及各种坑
- ubuntu SVN服务器的配置
- 阿里云+windows+svn服务器,实现外网用户访问自己的svn服务器
- 阿里云CentOs搭建svn服务器
- 阿里云centos 下安装SVN服务器
- 阿里云服务器linux系统配置svn
- 阿里云服务器Svn-Server无法连接
- JAVA: List用法
- 网络请求部分-------HttpClient和HttpURLConnection
- Volley简介(三)
- android 中UID与PID的作用与区别
- IOS自定义状态栏
- 阿里云ubuntu 创建svn服务器及SVN服务器的command
- 经验总结35--IP地址区域匹配
- Azure网站上的PHP — 配置自定义版本PHP
- TMS320F28335项目开发记录10_28335之SCI模块
- java开发中23种设计模式的总结
- 关于tableview 加载数据,性能优化
- 某银行IT运维流程管理体系建设之服务目录参考
- 动态加载布局
- app也有兑换码? 如何使用App Store兑换码