现在的位置: 首页 > 综合 > 正文

svn在ubuntu 8.04配置实例

2013年10月17日 ⁄ 综合 ⁄ 共 4805字 ⁄ 字号 评论关闭

目的:svn客户端—提交–更新—-svn服务端——-web服务器(svn更新)——-internet用户访问
网络环境:IDC机房:对外的web服务器(svn更新)—-svn服务端(对内部)
公司:svn客户端
internet用户
提示:svn服务器内部如何让svn客户端访问,使用隧道技术(blog有例子)
1.安装简单:apt-get install subversion
2.就是配置问题:
a.在/home/svn建立一个
b.#svnadmin create /home/svn/web:导入代码库
c.创建一个svn代码仓库放在关于web1的项目都在web下面,以后项目的所有文件都从这个代码库里面读取控制。
#svn import /var/www/web/ file:///opt/svn/bookrepos/web1 -m “Initial Import”
导入现在有的工程book到svn库里面,svn库的路径可以是file:///svn/path注意是3个”/”。
d.上面是本地方法,其他其他服务呢,其他服务器要在本地正常使用后,才能使用
#svnadmin create /home/svn/web2:导入代码库,在svn服务器上
#svn import /var/www/web2/ svn://IP地址/web2 -m “Initial Import” 在web其他服务上使用

二,设置用户权限:
你完成第一部操作svnadmin create的时候,会在web,web2这个文件夹下面创建一些web,web2的配置文件放在/home/svn/web/conf,/home/svn/web2/conf下面,ls一下发现有三个文件

#ls /home/svn/web/conf
authz  passwd  svnserve.conf
authz是配置用户权限的,passwd顾名思义是管理用户账号密码的,svnserve.conf是配置该项目总体配置文件.
#vi svnserve.conf
[general]  //放心的删除大段大段的注释有用的就这么5行,[general]别给忘了

anon-access=none //默认是”read”,设置成”none”这样匿名就无法访问进来

auth-access=write //认证进入的可以有write权限,但是他同时还需要满足auth-db的规则

passwd-db=passwd //就是同级目录下面的passwd文件,也可以放在其他位置用完整路径表达”/opt/svn/bookrepos/conf/passwd”

authz-db=authz //与passwd-db同理,就不再重复

realm=web //就是你项目的名字

#vi passwd
[user]
admin=1234
格式很简单,就是”用户名=密码”,一行一个用户
vi authz
[groups]
admins = admin
[/]
@admins = rw

三, 开启服务
#svnserve -d -r /home/svn/
这样/opt/svn就为svn服务的根目录了.

—————————————————–
服务器端环境:ubuntu8.04   subversion1.4.6

需求及实现效果:现有一个开发项目book。创建5个账号赋予不同的权限,admin为管理员。user1、user2可以修改更新该项目所有代码,user3只能更新修改该项目book/member这个目录下的代码。user4用来浏览该项目,但是无法进行修改提交。

开始把!

一,导入代码库:
#svnadmin create /opt/svn/bookrepos

创建一个svn代码仓库放在关于book的项目都在bookrepos下面,以后项目的所有文件都从这个代码库里面读取控制。

#svn import /var/www/book/ file:///opt/svn/bookrepos/book -m “Initial Import”

导入现在有的工程book到svn库里面,svn库的路径可以是file:///svn/path注意是3个”/”。

二,设置用户权限:

在你完成第一部操作svnadmin create的时候,会在bookrepos这个文件夹下面创建一些bookrepos的配置文件放在/opt/svn/bookrepos/conf下面,ls一下发现有三个文件

#ls /opt/svn/bookrepos/conf/
authz  passwd  svnserve.conf

authz是配置用户权限的,passwd顾名思义是管理用户账号密码的,svnserve.conf是配置该项目总体配置文件.

#vi /opt/svn/bookrepos/conf/svnserve.conf

———

[general]  //放心的删除大段大段的注释有用的就这么5行,[general]别给忘了

anon-access=none //默认是”read”,设置成”none”这样匿名就无法访问进来

auth-access=write //认证进入的可以有write权限,但是他同时还需要满足auth-db的规则

passwd-db=passwd //就是同级目录下面的passwd文件,也可以放在其他位置用完整路径表达”/opt/svn/bookrepos/conf/passwd”

authz-db=authz //与passwd-db同理,就不再重复

realm=book //就是你项目的名字

——–

#vi /opt/svn/bookrepos/conf/passwd

——–

[user]

admin=1234

user1=1234

user2=1234

user3=1234

user4=1234

——–格式很简单,就是”用户名=密码”,一行一个用户

#vi /opt/svn/bookrepos/conf/authz

——–

[groups]
admins = admin  //将多个用户设为一组,便于管理,多个用户之间用”,”隔开
users = user1,user2

[/]  //表示对svn目录下面的位置,这个目录根据你开启服务时候指定的那个根目录,稍后我们会开启/opt/svn这个目录
@admins = rw  //@表示为组名,如果是单用户就直接用户名就可以,权限有w,r,wr,空,空就表示没有任何权限

[bookrepos:/book]   //bookrepos这个版本库下面的book项目
@users = rw

[bookrepos:/book/member]  //bookrepos这个版本库下面book项目中member目录进行
user3 = rw  //没有@就是直接表示的是用户名

[bookrepos:/book]
user4 = r

——–

三, 开启服务

#svnserve -d -r /opt/svn/

这样/opt/svn就为svn服务的根目录了.
————————————————————
1.首先checkout出来
命令语法为 svn co URL dir(会提示输入用户名和密码)URL为svn仓库地址,dir为本地文件夹(即存放checkout出来文件的本地文件夹)

2然后添加文件进去。(先把要上传的文件复制到对应的文件夹里,然后再执行命令)

命令语法为svn add uploadfile

最后执行commit完成提交。
命令语法为svn ci -m “提交信息”

以后每次更新到最新的版本只要在仓库目录下执行svn update就可以了。
checkout和commit可以简写为co和ci。

要查看版本信息可以执行svn log:

把本地项目testsvn整个目录里的内容往备份站点塞, 这是最初的结构, 建立最初的rev 0
以后checkout回来同样是按该路径,把目录下的(不包括最后的目录名)文件取回
svn import testsvn svn://path/to/repos -m “最后的这个注释不能少”

取回项目, 路径同上. 最后取出来的新目录名不给定就会用最后路径的最后一个目录名, 这里就是repos目录
svn checkout svn:///path/to/repos A_NewProjectName

更新本地项目. 千万记得,通过第一步import后的那个目录并没有默认建立svn与远程的关系,需要手动从服务器checkout回服务器的版本到本地, 才算正式建立与远程的关系(什么关系? 复杂关系!). checkout回来的项目就可以时不时地执行:
svn update

搅和取回来的项目一番后,察看动了什么(一下命令都要在项目目录下运行)
svn status

你对目录结构的修改或添加删除文件等类操作不能自动commit, 需要根据svn status显示的提示将文件/目录 明确 告诉svn是add, delete, copy 还是move
svn add new_dir
svn delete new_dir
svn status仅仅显示最根本的信息,更多的改动变化通过这个获得:
svn diff

查看项目当前状态。
svn status
查看你做的更改。
svn diff
svn commit      -m “message”       提交你的改变到版本库中,后面参数为此次发动的注释.
svn  list                   列出版本库中当前目录下的文件
svn delete file          在本地中删除file文件。svn commit 提交更新才会在版本库实际删除file文件。
svn  add      file        增加file文件。同样只有在svn commit 提交后才会在版本库中实际增加。

svn move file file2           将file文件更名为file2
.svn revert                      去除更改。后面可接操作过的文件。
svn log                                    svn 日志。

svn各种状态关键字意义:
L abc.c # svn已经在.svn目录锁定了abc.c
M bar.c # bar.c的内容已经在本地修改过了
M baz.c # baz.c属性有修改,但没有内容修改
X 3rd_party # 这个目录是外部定义的一部分
? foo.o # svn并没有管理foo.o
! some_dir # svn管理这个,但它可能丢失或者不完整
~ qux # 作为file/dir/link进行了版本控制,但类型已经改变
I .screenrc # svn不管理这个,配置确定要忽略它
A + moved_dir # 包含历史的添加,历史记录了它的来历
M + moved_dir/README # 包含历史的添加,并有了本地修改
D stuff/fish.c # 这个文件预定要删除
A stuff/loot/bloo.h # 这个文件预定要添加
C stuff/loot/lump.c # 这个文件在更新时发生冲突
R xyz.c # 这个文件预定要被替换
S stuff/squawk # 这个文件已经跳转到了分支

提交你涂污后的大作:
svn commit

温馨提示: 你可以本地建一个服务器来玩玩,
svnadmin create g:/repos
记得把g:/repos/conf目录下的passwd和svnserve.conf里的注释去掉, svnserve.conf里要改为
[general]
password-db = passwd # 这个表示我要用目录下的passwd文件当作访问密码设置
passwd里要加上用户名
[users]
thisis = userpwd
之后,你就可以通过file:///g:/repos来访问.
或者, 由svnserve -d -r g:/repos 建立本地svn协议服务器,然后通过svn://localhost/来访问
你总是可以通过svn list svn://localhost/来察看服务器该路径下的内容. 然后通过svn checkout 把路径目录下的内容(不包括最后路径目录) 取回到 “./最后路径名/”目录下.

抱歉!评论已关闭.