怎样搭建本地svn服务器环境 本地搭建svn服务器教程

怎样搭建本地svn服务器环境?

搭建SVN服务器端:

1. 解压缩svn到一个目录, 例如c:svn

2. 解压缩svnservice的压缩包, 将svnservice.exe放入c:svnbin

3. 安装TortoiseSVN, 安装完毕时会提示重新启动计算机, 重启完毕后安装简体中文语言包, 然后在随便一个目录右击, 就会发现多出了一些SVN相关菜单, 选择其中的TortoiseSVN, 再选择子菜单”Settings”, 设置Language为”中文(简体)”

4. 打开”我的电脑”, 建立一个存放svn信息的目录, 例如c:svnhome, 然后返回在c盘, 右击这个svnhome目录, 在出现的菜单中选择TortoiseSVN, 再选择子菜单”在此创建文件库”, 选择fsfs方式即可 (注: 这里选择创建文件库实际上就相当于让TortoiseSVN代替你进行了svnadmin create c:svnhome的操作)

5. 在dos控制台状态下cd c:svnbin 然后svnservice -install -d -r c:svnhome 再net start svnservice来将其作为服务运行, 建议你再到控制面板-管理工具-服务中找到SVNService, 右击选择”属性”, 再将其启动类型设置为”自动”

6. 打开c:svnhome, 你会发现已经多了一些目录和文件, 打开conf子目录, 打开svnserve.conf文件, 这里行前凡是有#的都等于是被注释忽略了, 你可以把#去掉让那一行生效, 或者自己新添加行. 里面的英文注释已经详细说明了各种设置的含义, 最后你设置[general]小节中行前没有#号的内容为: anon-access = none auth-access = write password-db = passwd 含义是: 未验证用户无任何权限 (如果把none修改为read就是给予读权限) 已验证用户给予写权限 (当然也能读) 密码数据存放到passwd文件中 然后打开同目录的passwd文件来设置帐户: 同样, 设置[users]小节中行前没有#号的内容, 例如: snowman=abc123 含义是: 用户snowman的密码为abc123 6. 打开”我的电脑”, 在你需要进行版本控制的目录上右击, 选择TortoiseSVN, 再选择子菜单”导入…”, 设置”文件库url”为svn://localhost 点确定后就会提示文件正在导入. (注: 这里是svn文件库与svn服务是同一台计算机的情况, 所以可用localhost, 其它机器如果要访问svn服务, 应该用svn://svn服务器的IP地址, 例如svn://10.0.0.52) 至此, SVN服务器配置完成 客户端配置: 1. 没安装TortoiseSVN的计算机先安装它并重启计算机. (注: 具体步骤参照前面搭建服务器端的第3步) 2. 创建一个准备用来存放版本控制工程的目录, 例如d:project, 然后在”我的电脑”中右击这个目录, 选择”SVN取出…”, 设置”文件库url”为svn://svn服务器的IP地址, 接下来会问你用户名和帐号, 你就填写前面搭建服务器端所设置的用户snowman密码abc123 (文件库url可参照前面搭建服务器端第6步的注解) 点确定后就会提示文件正在取出到d:project 至此, SVN客户端配置完成, 你会看到d:project及其下面的文件都被标记了绿色对勾 客户端的简单日常使用: 1. 要取得工程的当前的最新版本, 右击d:project, 选择”SVN更新” 2. 你更改工程后, 要将你的修改更新到SVN, 右击d:project, 选择”SVN提交” (谨慎的话请先更新到SVN最新版本后再提交)

延伸阅读

如何为iPhone项目搭建小型的SVN服务器呢?

使用SubVersion服务器,一般使用乌龟,客户端可以使用xcode自带的subversion.配好服务端,可以直接使用checkout,然后就可以使用了.

30?怎么安装和使用svn?

SVN,即subversion,是一个开源的版本控制系统,版本控制器。是CVS的派生版。

它是一个C/S模式的软件,既有SVN服务器,也有SVN客户端。利用它可以将数据更新到最新版本,也可以找回历史版本,可以检查文件的修改历史。

1. SVN的基本功能

根据文件修改的次数,自动增加版本库的版本号(库中所有的文件共用一个版本号),以便找回历史文件。

防止团队开发时,多人同时修改同一文件导致文件被覆盖或删除。

2. 软件的安装

服务器的安装(建议先安装服务器)

Setup-Subversion-1.6.17.msi

客户端的安装

TortoiseSVN-1.6.16.21511-win32-svn-1.6.17.msi

装完客户端后,需要重启电脑。

安装完毕以后,在桌面右击鼠标,如果出现两个SVN相关的选项,说明SVN安装成功

3. 服务器的搭建

a. 创建一个空文件夹,作为SVN服务器的目录 例如 E:server 文件夹的名字可以随便取

b. 进入该文件夹,右键,选择 TortoiseSVN 菜单,单击里面的 Create repository here(创建版本库)。系统就会自动在该目录中生成一些文件和文件夹

c. 修改conf文件夹中的passwd配置文件,添加代码 yangjun = 123456 即添加用户和设置密码

d. 修改conf文件夹中的svnserve.conf主配置文件,去掉 # password-db = passwd 所在行的注释。 (目的是让passwd配置文件生效)

这样,SVN服务器就搭建好了。

4. 服务器的启动

打开Windows的命令行,执行命令 svnserve.exe -d -r E:server

之后,SVN服务器的目录(版本库)E:server 就可以被SVN客户端访问了。需要注意的是,命令行界面(DOS界面)不能关闭,否则服务就停止了。

5. 客户端的使用

a. 新建一个空文件夹作为SVN客户端的目录。 例如 F:user1

b. 进入该文件夹,右键,选择 TortoiseSVN 菜单,单击里面的 Repo-browser(浏览版本库),会弹出URL的输入框,输入 svn://127.0.0.1 或 svn://localhost (前面的表示访问服务器的协议,后面的表示服务器所在主机的ip)。

c. 右键,选择 SVN Checkout(检出),连接服务器(第一次连接服务器的时候,需要检出,以后就不需要了)。

以后,就把SVN客户端的目录 F:user1 作为自己项目文件的目录,通过SVN服务器进行文件的上传、修改、下载和删除等操作。

6. SVN客户端的目录中的文件的图标及含义

问号 表示该文件是刚引入的新文件,还未被SVN版本库识别

加号 表示该文件已经添加至服务器的观察名单,但还未上传至服务器

对号 表示该文件的版本和服务器中的版本是一样的

感叹号 表示该文件的内容和服务器中的文件内容不一样,也就是从版本库同步之后,该文件又作了修改,但还未上传至服务器

锁 表示该文件已被锁定

客户端目录中新添加的文件,由于还未被服务器识别,所以是以问号标识的。

选择问号标识的文件,右键,选择 TortoiseSVN 菜单,单击里面的 Add 选项,添加至服务器的观察名单。这时,问号就变成了加号。

选择加号标识的文件,右键,选择 SVN Commit(提交),执行上传。会弹出一个对话框,输入用户名和密码即可。这时,加号就变成了对号。

把对号标识的文件内容进行更改后,对号就变成了感叹号。

选择感叹号标识的文件,右键,选择 SVN Commit(提交),执行上传。之后,感叹号就变成了对号。

选择对号标识的文件,右键,选择 TortoiseSVN 菜单,单击里面的 Get lock (锁定)。之后,对号就变成了锁。

选择锁标识的文件,右键,选择 TortoiseSVN 菜单,单击里面的 Release lock (解锁)。之后,锁就变成了对号。

7. 远程用户下载SVN服务器中的文件的步骤

这里在F盘新建一个空目录 F:user2 进行模拟。

进入该文件夹,右键,选择 SVN Checkout(检出),连接服务器,输入正确的URL。就会自动把版本库中的所有文件下载到当前目录。

以后,如果版本库中的文件有改动,右键,选择 SVN Update(更新),就可以和版本库中的文件同步。即当前客户端目录中的文件和版本库中的一致。

可以理解为用户第一次下载用 SVN Checkout(检出),以后下载就用 SVN Update(更新)。

8. 文件的删除

进入客户端目录 F:user1 ,直接删除你想要删除的文件(这时,只是客户端的文件被删除)。

要想把服务器中的对应文件也删除,可以右键,选择 SVN Commit(提交),弹出一个对话框,勾选刚才删除的文件,点击确定。之后服务器中的对应文件也被删除了。

服务器上的某个文件被删除后,当其他客户端的用户,执行 SVN Update(更新)时,就会和服务器中的文件同步。(对应的文件也会被删除)

9. 历史版本的找回

如果误删除了服务器上的某个文件,想要找回该文件,可以恢复到历史版本。

在客户端目录 F:user1 中,右键,选择 TortoiseSVN 菜单,再单击 Update to revision,弹出一个对话框,选择 revision,输入你想恢复到的版本号(一般是上一个版本号),确定。

10. 历史版本间的差异对比

如果某一个文件被多个人依次更新修改过,之后,大家也都同步了服务器的版本库。发现,某一个文件被别人更新过,可以通过以下方法查看差异。

选择被更新的文件,右键,选择 TortoiseSVN 菜单,再单击 Diff with previous version,会对比显示出该文件的历史版本和当前版本的差异。

左边的是历史版本,右边的是当前版本。

11. 冲突的解决

冲突指定的是,当多个人同时对同一个文件进行修改后,某一个用户(user1)先进行了提交(更新了服务器的版本库),其他用户(user2)后进行的提交,此时,就会出现文件过时而无法提交的现象(因为user2修改的文件版本不是最新版本,所以会提示文件过时,导致无法提交)。

冲突的产生是SVN版本控制器的一个保护措施,可以有效防止客户端中低版本的文件覆盖服务器中高版本的文件。

如何解决冲突?

选择出现冲突的文件,右键,选择 TortoiseSVN 菜单,再单击 Edit conflicts,会对比显示出该文件的服务器版本和自身版本的差异。

左边的是服务器的版本,右边的是自身版本。

冲突的解决,是靠人为手动来解决的,一般是冲突相关的多个用户之间商量后,决定以某个文件版本为主。比如,经过大家商量后,决定以服务器中的版本为主。接下来,就应该这样操作: 在左边区域(服务器的版本),右键,选择 use this whole file或者在产生冲突的行,右键,选择 use this text block 来各取所长,依次处理完所有有冲突的行,之后,点击保存,关闭窗口。

然后,选择出现冲突的文件,右键,选择 TortoiseSVN 菜单,再单击 Resolved(已解决)。告诉SVN冲突经大家商量后,已经解决。

这时,该文件就可以正常提交了。选择它,右键,选择 SVN Commit(提交),上传至服务器。最后可以看到文件的标识变为对号。

12. 将SVN服务器安装至系统服务

前面我们说过,SVN客户端操作的过程中,开启SVN服务的命令行窗口不可以关闭,否则,SVN服务也会终止,导致客户端无法连接服务器。

这里,我们可以把SVN服务添加到系统的自启动服务当中。操作方法如下:

重新打开 cmd 命令行,在命令行中执行以下命令

sc create svnserve binpath= “D:Program FilesSubversionbinsvnserve.exe –service –root E:server”

如果提示 “[SC] CreateService 成功”,则表明创建系统服务成功。此时,添加的服务名为svnserve,状态默认是关闭的,启动方式为手动。

之后,我们就可以利用Windows系统自带的服务管理界面进行管理,比如开启SVN服务,设置为自启动等。而不用通过命令行来控制了。

删除系统服务 sc delete svnserve ( 如果删除了系统的svnserve服务,我们就又只能通过命令行来开启SVN服务,且不能关闭命令行窗口)

13. 取消记住的用户名和密码

如果在进行身份验证的时候,我们勾选了记住用户名和密码。那么,当我们需要使用别的用户名进行操作时,便会出现无法更改账号的情况,这时,我们可以取消记住的用户名和密码。下次进行身份验证的时候,我们就可以选择输入其他的用户名和密码。

取消记住用户名和密码的方法:

删除身份验证时保存在系统中的相关文件(auth文件夹)即可。进入 C:UsersAdministratorAppDataRoamingSubversion这个目录,删除里面的auth文件夹。

14. 权限管理

SVN的默认权限设定是匿名用户也可以连接到服务器,访问服务器中的文件,还可以进行下载。也就是说,任何一个人只要知道了SVN服务器所在主机的ip,就可以下载版本库中的所有文件。这种默认的权限设定是不安全的。因此,我们有必要进行SVN服务器的权限管理。

打开SVN服务器的主配置文件 E:serverconfsvnserve.conf,将这行代码

# anon-access = read

修改成

anon-access = none

保存即可。

之后,匿名用户对服务器就没有读的权限。也就是说,用户在浏览版本库和下载文件时,需要输入用户名和密码。

15. 权限分配

权限分配指的是,给不同的用户分配不同的权限,比如,需要设定某些用户(管理员)对所有的文件都有读和写的权限,其他用户(普通用户)只有读的权限或者只对服务器目录中的某个文件夹有读和写的权限时,就可以用到权限分配。

这时,我们需要修改服务器配置文件目录( E:serverconf )中的三个配置文件:svnserve.conf 、passwd 和 authz。

详细操作方法可自行查阅相关文档·

版权声明