Ubuntu下架设简易svn服务器

本文详细介绍如何在Ubuntu系统下搭建简单的SVN服务器,包括安装配置SVN、创建项目、设置用户权限等步骤,并提供了实用的命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://ldl.wisplus.net/2011/03/16/ubuntu%E4%B8%8B%E6%9E%B6%E8%AE%BE%E7%AE%80%E6%98%93svn%E6%9C%8D%E5%8A%A1%E5%99%A8/

       
                                               

Ubuntu下架设简易svn服务器

               

原文:http://www.felix021.com/blog/read.php?1997

http://blog.86118.net/index.php?p=718

自己做部分修改

【1】安装svn

(1)通过apt-get安装svn

$ sudo apt-get install subversion

(2)创建svn的目录

$ cd ~

$ mkdir svn

【2】创建一个svn项目:myproject1

(1)创建项目所在目录

$ mkdir ~/svn/myproject1

(2)通过svn创建项目

$ cd ~/svn

$ svnadmin create myproject1

通过该命令后svn会在myproject1目录下创建项目相关的子目录与文件

【3】配置

进入~/svn/myproject/conf后用命令ls,发现该目录下有3个文件

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

$vim ~/svn/myproject1/conf/svnserve.conf

把一下几行前面的#去掉(行首不能有空格)

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

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

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

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

realm = myproject1 //你项目的名称

$ vim myproject1/conf/passwd

格式很简单,在[users]后面,一个用户一行,格式为

用户名 = 密码

比如  ldl = 123

$ vi repo/conf/authz

控制各个用户的权限,比较繁琐,最简单的是在[aliases]这一节【前面】加上这两行

[/]

*=rw

【4】运行服务

$ svnserve –daemon –root ~/svn/

//可以在svn目录下创建多个项目的repository。

【5】svn客户端进行相关操作

svn checkout svn://localhost/myproject1 –username=ldl –password=1234

相关svn实例

 

需求及实现效果:现有一个开发项目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 把路径目录下的内容(不包括最后路径目录) 取回到 “./最后路径名/”目录下.

 

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 行列式是线性代数的核心概念,在求解线性方程组、分析矩阵特性以及几何计算中都极为关键。本教程将讲解如何用C++实现行列式的计算,重点在于如何输出分数形式的结果。 行列式定义如下:对于n阶方阵A=(a_ij),其行列式由主对角线元素的乘积,按行或列的奇偶性赋予正负号后求和得到,记作det(A)。例如,2×2矩阵的行列式为det(A)=a11×a22-a12×a21,而更高阶矩阵的行列式可通过Laplace展开或Sarrus规则递归计算。 在C++中实现行列式计算时,首先需定义矩阵类或结构体,用二维数组存储矩阵元素,并实现初始化、加法、乘法、转置等操作。为支持分数形式输出,需引入分数类,包含分子和分母两个整数,并提供与整数、浮点数的转换以及加、减、乘、除等运算。C++中可借助std::pair表示分数,或自定义结构体并重载运算符。 计算行列式的函数实现上,3×3及以下矩阵可直接按定义计算,更大矩阵可采用Laplace展开或高斯 - 约旦消元法。Laplace展开是沿某行或列展开,将矩阵分解为多个小矩阵的行列式乘积,再递归计算。在处理分数输出时,需注意避免无限循环和除零错误,如在分数运算前先约简,确保分子分母互质,且所有计算基于整数进行,最后再转为浮点数,以避免浮点数误差。 为提升代码可读性和可维护性,建议采用面向对象编程,将矩阵类和分数类封装,每个类有明确功能和接口,便于后续扩展如矩阵求逆、计算特征值等功能。 总结C++实现行列式计算的关键步骤:一是定义矩阵类和分数类;二是实现矩阵基本操作;三是设计行列式计算函数;四是用分数类处理精确计算;五是编写测试用例验证程序正确性。通过这些步骤,可构建一个高效准确的行列式计算程序,支持分数形式计算,为C++编程和线性代数应用奠定基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值