`
hyw520110
  • 浏览: 218592 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过Subversion的命令行,快速搭建版本库服务器端

阅读更多

通过Subversion的命令行,快速搭建版本库服务器端
 

软件环境:
  Svn:CollabNetSubversion-server-1.5.5-1.win32

 

搭建步骤:
1 建立版本库
Svnadmin create A:\B\repository

例如:>svnadmin create d:\repository

在D盘根目录下,建立版本库svnrepository,当然版本库的目录可以任意指定。
 

2 修改属性文件
修改repository\conf中的文件内容
文件:Passwd

修改前:
[users]

# harry = harryssecret

# sally = sallyssecret
修改后:
[users]

harry = harryssecret

sally = sallyssecret

 

这样你就为版本库增加了两个用户:harry,sally,密码分别是“=”后面的内容。我们也可以增加用户,例如
svnuser=svnuser123

 

文件:svnserve.conf

修改前:
[general]

### These options control access to the repository for unauthenticated

### and authenticated users.  Valid values are "write", "read",

### and "none".  The sample settings below are the defaults.

# anon-access = read

# auth-access = write

修改后:
[general]

### These options control access to the repository for unauthenticated

### and authenticated users.  Valid values are "write", "read",

### and "none".  The sample settings below are the defaults.

anon-access = read

auth-access = write

 

3 添加svn_path环境变量
有可能不是必须要完成的步骤,此部分调查中。。。
 

4 启动服务
启动建立好的版本库服务。
命令:svnserve -d -r 版本库路径
例如:svnserve -d -r D:\repository

 

注意:启动后请勿关闭窗口,否则服务会被停掉。
 

5 导入工程到版本库中
命令:svn important 导入文件PATH 版本库PATH [参数]

通过import命令,将本地未版本化的工程导入到版本库中。导入完成后,svn会为导入的文件设定版本号。
 

例如:将本地机器上的E:\eclipse_workspace\jdk51导入到版本库中
命令:C:\>svn import E:\eclipse_workspace\jdk5 file:///d:/repository/jdk5 -m "first import jdk5 on 20090317"

运行结果:
Adding E:\eclipse_workspace\jdk5\.classpath

Adding E:\eclipse_workspace\jdk5\.project

Adding E:\eclipse_workspace\jdk5\src

Adding E:\eclipse_workspace\jdk5\src\jdk

Adding E:\eclipse_workspace\jdk5\src\jdk\autoboxing

Adding E:\eclipse_workspace\jdk5\src\jdk\autoboxing\Autoboxing.java

Adding E:\eclipse_workspace\jdk5\src\jdk\bigdecimal

Adding E:\eclipse_workspace\jdk5\src\jdk\bigdecimal\Bigdecimal.java

Adding E:\eclipse_workspace\jdk5\src\jdk\compare

Adding E:\eclipse_workspace\jdk5\src\jdk\compare\Compare.java

Committed revision 1.

 

命令说明:
-m :指定导入的log信息。-m参数是必须的,但是可以指定空内容。否则的话svn会启动外部编辑器,编辑log内容
/ :svn的版本库path,通过/进行分割,而不是windows的\

运行结果说明:
Adding :表示向版本库中追加文件
Committed revision 1. :表示当前版本为1

 

注意:
  1 import命令导入时,并不会在版本库中建立一个跟工程名同样的文件目录。只是将本地目录下的文件导入到指定版本库的目录下面。上面的导入操作,就是将jdk5下面的文件以及子目录导入到repository下面。所以导入的时候,最好先在版本库repository中建立好目录
  2 对版本库下的文件进行删除,移动,拷贝,请务必使用svn的命令,或者客户端工具完成。如果直接在windows下进行删除,拷贝,粘贴操作,svn是无法记录这些操作,同时也就失去了版本控制的意义了。
 

关于导入时发生的一些问题,参考文章最后。
 

8 查看版本库文件
命令:svn list 版本库文件目录
通过list命令查看版本库任意目录下的文件夹,以及文件。
 

例如:查看版本库repository根目录下的文件目录
命令:C:\>svn list file:///d:/repository/jdk5

运行结果:
.classpath

.project

bin/

src/

 

注意:
  我是在C盘下运行的list命令,版本库并不在C分区下,所以必须指定版本库所在的分区。假如,我门直接在版本库所在的分区下运行list命令,无需指定版本库所在的分区
命令:D:\>svn list file:///repository/jdk5

运行结果:
.classpath

.project

bin/

src/

 

7 取得版本库文件到本地机器
命令:svn checkout 版本库文件PATH 本地路径文件PATH [参数]

通过import命令,仅仅是将本地代码,导入到版本库中。但是版本库中的代码并没有跟本地代码关联起来,即使我们修改了本地代码,也无法反应到版本库中的。
  通过checkout命令,从版本库中取得工程的拷贝到本地,所取得的拷贝是和版本库关联在一起的。
 

例如:将导入的工程到取到本地机器上
命令:D:\>svn checkout file:///repository/jdk5 e:/jdk5 -r 1

运行结果:
A    E:\jdk5\.classpath

A    E:\jdk5\.project

A    E:\jdk5\src

A    E:\jdk5\src\jdk

A    E:\jdk5\src\jdk\autoboxing

A    E:\jdk5\src\jdk\autoboxing\Autoboxing.java

A    E:\jdk5\src\jdk\bigdecimal

A    E:\jdk5\src\jdk\bigdecimal\Bigdecimal.java

A    E:\jdk5\src\jdk\compare

A    E:\jdk5\src\jdk\compare\Compare.java

Checked out revision 1.

 

命令说明:
 -r :指定要取得的文件的版本
运行结果说明:
 checkout命令会自动为每个文件夹在本地建立一个.svn的隐藏文件文件夹,这个是存放记录本地文件和版本库关联信息文件的。请勿删除,如果删除了,也就失去了和svn版本库的关联关系。
 

注意:
  Checkout命令取得文件时,并不会在指定的本地路径下,自动建立同名目录,需要事先做成相应的文件目录。
 

9 修改文件,并且提交到svn

命令:svn commit 本地文件PATH

Commit命令是
例如:修改E:\jdk5\src\jdk\autoboxing\Autoboxing.java文件后,提交到svn版本库中
命令:D:\>svn commit E:\jdk5\src\jdk\autoboxing\Autoboxing.java -m "change 20090317"

运行结果
Sending   E:\jdk5\src\jdk\autoboxing\Autoboxing.java

Transmitting file data .

Committed revision 2.

 

命令说明:
  执行commit时,只需要指定要提交的文件的路径即可,svn会根据“.svn”文件夹中记录的内容,将命令解析成“svn commit 本地文件PATH 版本库PATH”的形式,然后再执行。这里需要注意的是,被解析的“版本库PATH”中并不包含分需信息,所以必须在版本库所在的目录下面执行commit命令。
上面的命令如果不在D分区下执行,会发生下面的错误:
C:\>svn commit E:\jdk5\src\jdk\autoboxing\Autoboxing.java -m "change 20090317"

svn: Commit failed (details follow):

svn: Unable to open an ra_local session to URL

svn: Unable to open repository 'file:///repository/jdk5/src/jdk/autoboxing'

 

运行结果说明:
Committed revision 2. :为版本库所有文件设定统一的版本号。这里我们可以看到,即使修改了一个文件,但是svn是将整个版本库的版本设定成2了,也就是说svn并不对单独文件设定版本号

 

10 追加新文件到svn

命令:svn add 本地目录PATH

add命令会将指定的文件目录以及其包含的文件提交到svn版本库中,同时会为此文件,建立本地文件到版本库的关联关系(建立.svn文件夹)。但是,add命令并不会将文件追加到版本库中,而是需要commit命令进行提交。

 

例如:把E:\jdk5\src\jdk\Unboxing添加到版本库中
命令:D:\>svn add E:\jdk5\src\jdk\Unboxing

运行结果:
A   E:\jdk5\src\jdk\unboxing

A   E:\jdk5\src\jdk\unboxing\Unboxing.java

注意:
  1 add命令是没有-m参数的,原因调查中。。。
  2 add命令并不是真正的把本地文件追加到版本库中,而是让文件或者文件夹在版本控制中,也就是仅仅为文件或者文件夹建立一个和版本库的关联关系。我们用svn list可以发现,Unboxing并没有被追加到版本库中。如下:D:\>svn list file:///d:/repository/jdk5/src/jdk

autoboxing/

bigdecimal/

compare/

generic/

 

通过commit命令,将文件提交到版本库中。
D:\>svn commit E:\jdk5\src\jdk\unboxing -m "add unboxing"

Adding         E:\jdk5\src\jdk\unboxing

Adding         E:\jdk5\src\jdk\unboxing\Unboxing.java

Transmitting file data .

Committed revision 6.

 

注意:
  因为我是add一个文件夹到版本库中的,所以不能单独的commit此文件夹下面的某一个文件,只能commit整个文件夹,只提交某一个文件,会发生下面的错误。

D:\>svn commit E:\jdk5\src\jdk\unboxing\Unboxing.java

svn: Commit failed (details follow):

svn: 'E:\jdk5\src\jdk\unboxing' is not under version control and is not part of

the commit, yet its child 'E:\jdk5\src\jdk\unboxing\Unboxing.java' is part of the commit

 

13 删除版本库文件
命令:svn delete 本地文件path

        svn delete 版本库文件path

delete命令,可以执行两种删除,一种是删除本地文件,并且通过修改.svn文件,让被删除的文件在版本库的控制之下,但是并不实际删除版本库中的文件,需要通过commit命令,提交版本库后,执行对版本库的修改。另一种是直接删除版本库中的文件,无需执行commit命令。
 

方法一:
例如:删除E:\jdk5\src\jdk\unboxing\Unboxing.java文件。
命令:
D:\>svn delete E:\jdk5\src\jdk\unboxing\Unboxing.java

D         E:\jdk5\src\jdk\unboxing\Unboxing.java

通过svn list命令查看,版本库中文件实际还存在,只是删除了本地文件,下面通过commit提交删除。
D:\>svn commit E:\jdk5\src\jdk\unboxing\Unboxing.java -m "delete 20090317"

Deleting       E:\jdk5\src\jdk\unboxing\Unboxing.java

Committed revision 7.

通过svn list命令查看,版本库文件已经被删除。
 

方法二:

 

 

 


14 查看版本库log

命令:svn log 版本库PATH

通过 svn log命令,可以查看对版本库操作的所有的log信息,前提是必须在每次对版本库进行操作(导入,删除,修改,移动等)操作是,追加了相应的log。
 

例如:通过svn log命令,查看第5步中,导入时的log信息
命令:C:\>svn log file:///d:/repository

运行结果:
------------------------------------------------------------------------

r3 | wd | 2009-03-17 14:04:27 +0800 (火, 17 3 2009) | 1 line

first import jdk5 on 20090317

 

导入的过程中,遇到了一些问题,如下:
问题1:
E:\eclipse_workspace>svn  import jdk5 svn://localhost/repository

svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) option

s

svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and

 no 'editor-cmd' run-time configuration option was found


原因:

 提示要在windows环境变量中,设置SVN_EDITOR。
 

问题2:
E:\>svn import E:\eclipse_workspace\jdk5 file:///repository/jdk5

'C:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
svn: system('C:\Program Files\EmEditor\emeditor.exe svn-commit.tmp') returned

 

原因:

  当没有指定-m参数的时候,svn会启动环境变量SVN_EDITOR中指定的编辑器。上面的命令,没有指定-m参数,但是svn却无法启动SVN_EDITOR设定的编辑器。


解决方法:
在导入命令中,追加-m参数,如下
svn import E:\eclipse_workspace\jdk5 file:///repository/jdk5 -m "import"

-m参数是,导入的时候,需要指定的log信息。
 

问题3

C:\>svn import E:\eclipse_workspace\jdk5 file:///repository/jdk5 -m "first import jdk5 on 20090317"

svn: Unable to open an ra_local session to URL

svn: Unable to open repository 'file:///repository/jdk5'

 

原因:
版本库的路径不合法。我们是在C分区根目录下执行import命令的,svn默认认为版本库就在C分区根目录下,然而实际得到版本库是在D分区的根目录下。
解决方法:
修改版本库的绝对路径file:///d:/repository/jdk

 

问题4

在windows中,手动关闭Subversion Server,为什么导入,还可以正常进行


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/haru/archive/2009/03/16/3996152.aspx

分享到:
评论

相关推荐

    svn 服务器端 客户端

    SVN服务器端是整个版本控制系统的核心,它存储项目的所有历史版本和当前状态。常见的SVN服务器端软件有Apache Subversion(也称为Apache SVN或仅Subversion)和VisualSVN Server。Apache Subversion是一个开源项目...

    SVN 教程和安装文件(客户端和服务器端)

    2. 版本库创建:通过命令行工具svnadmin或服务器管理工具创建新的版本库。 3. 用户与权限管理:配置SVN服务器,为不同用户提供访问控制,确保数据安全。 四、SVN用户安装与使用手册.doc 该文档详细介绍了SVN客户端...

    svn1.6安装包和教程

    这个版本的客户端和服务器端安装包将使你能够在Windows环境下搭建和使用SVN。 二、SVN客户端 1. 安装:客户端是开发者用来与版本库交互的工具,你可以按照提供的教程进行安装。一般步骤包括下载安装文件、运行安装...

    SVN Server的搭建与配置

    总体而言,这段内容详细介绍了如何快速搭建和配置一个SVN服务器环境,包括安装VisualSVN Server、创建版本库、设置用户权限以及如何安装TortoiseSVN客户端。这些知识对于希望在Windows平台上实现SVN版本控制的用户来...

    TortoiseSVN-1.6.10说明书

    - **使用命令行工具创建版本库**:通过 Subversion 命令行工具 `svnadmin create` 来创建版本库。 - **使用 TortoiseSVN 创建版本库**:TortoiseSVN 提供了一个图形界面工具来帮助用户创建版本库。 **3.1.3 本地...

    TortoiseSVN-1.6.0 中文帮助文档(PDF)

    - **使用命令行工具创建版本库:** 可以通过命令行工具 `svnadmin` 来创建版本库。 - **使用 TortoiseSVN 创建版本库:** 在 Windows 资源管理器中选择一个空文件夹,然后右键选择“Create repository here”选项...

    svn服务器搭建包和方法

    在安装过程中,你需要选择安装类型,配置服务器端设置,包括仓库位置、访问控制策略等。 安装完成后,你需要创建一个SVN仓库。这可以通过命令行工具`svnadmin`来实现,或者如果你使用的是VisualSVN Server,可以...

    svn客服端服务端套装

    在提供的文件中,我们看到了一系列与SVN相关的客户端和服务器端工具,包括: 1. **TortoiseSVN**:这是一款集成在Windows资源管理器中的SVN客户端,提供图形化用户界面,方便用户进行版本控制操作,如检出、提交、...

    svn安装与patch文件应用

    ### SVN安装与Patch文件应用详解 #### Subversion (SVN) 概述 Subversion (SVN) 是一种广泛使用的版本控制系统,它帮助开发者管理...通过以上步骤,用户可以快速搭建自己的 SVN 版本控制系统,并有效地管理项目版本。

    svnKit java操作svn

    可以通过命令行工具`svnadmin`或TortoiseSVN图形界面来创建版本库。 1. **使用命令行创建版本库** 打开命令提示符,执行如下命令: ```bash svnadmin create E:\svndemo\repository ``` 上述命令会在指定目录...

    版本控制器svn用法(附图)

    - 在计算机中选择一个位置创建版本库目录,例如在E盘创建一个名为 `svnluo` 的文件夹。 - 打开命令提示符,执行命令 `svnadmin create E:\svnluo` 创建版本库。 ![创建版本库](image.svg) ##### 3. 配置访问权限 ...

    SVN工具包

    5. **示例项目**:有时,工具包会包含一些示例项目,让用户通过实际操作来熟悉SVN的基本流程,如创建版本库、添加文件、提交更改等。 6. **插件或扩展**:对于特定IDE(如Eclipse、IntelliJ IDEA)的SVN支持插件,...

    Git权威指南PDF完整版

    30.5.2 通配符版本库,管理员通过推送创建/ 434 30.5.3 直接在服务器端创建/ 435 30.6 对 Gitolite 的改进/ 435 30.7 Gitolite 功能拓展/ 436 30.7.1 版本库镜像/ 436 30.7.2 Gitweb 和 Git daemon 支持/ 438 30.7.3...

    最新的汉化版SVN

    "最新版本的svn及其汉化包"意味着这个压缩包包含了最新的 SVN 客户端和服务器端软件,且已经过汉化处理,可以提供中文界面,使操作更加直观易懂。 VisualSVN Server是Windows平台上流行的SVN服务器管理工具,提供了...

    SVN环境所需基本软件+文档说明

    1. **SVN客户端与服务器端软件**: - **SVN服务器**:Apache Subversion(简称SVN)服务器通常使用Apache HTTP Server或VisualSVN Server。Apache HTTP Server是开源且跨平台的Web服务器,可以与SVN模块结合使用,...

    SVN新人安装无敌宝典

    首先,我们来看`apache_2.2.6-win32-x86-openssl-0.9.8e.msi`,这是一个Apache HTTP Server的安装程序,用于搭建SVN的服务器端。Apache HTTP Server是世界上最流行的Web服务器软件,它可以与SVN集成,提供版本控制...

Global site tag (gtag.js) - Google Analytics