来源:http://trac.seagullproject.org/wiki/Installation/FromSVN

Subversion

简介

如果你想利用项目最新开发的特性,你可以到我们的SVN服务器取得代码的最新版本。

//请注意:像SVN知识库上的任何代码一样,这个版本也可能包含bugs,但是大多情况下它是很稳定的...

如里你想提交补丁或译文,请始终使用SVN的最新版本:

如何取得最新的SVN版本:

$ svn co http://svn.seagullproject.org/svn/seagull/trunk

或者你想要某个版本的最新补丁,选择正确的补丁分支,如

$ svn co http://svn.seagullproject.org/svn/seagull/branches/0.6-bugfix

注意,当前的最新版本可以在上面的0.6-bugfix获得

在你的 ~/.subversion/config下,你可以随意地设置以下的各项:

[miscellany]
enable-auto-props = yes
 
[auto-props]
*.php = svn:eol-style=native
*.html = svn:eol-style=native
*.lang = svn:eol-style=native
...
etc.

这样eol至始至终将保持与存储库中一致.(auto props只适用于新添加的文件)

用户与密码

这里无需用户名与密码,在tortoise中这个栏位留空白.

列表分枝

你可以在http://svn.seagullproject.org/svn/seagull/branches/上查看所有分支的列表

如何检查本地文件的修改与SVN中的差异:

$ svn status

How to check which repo (remote) files have changed compared with yours:

$ svn status -u

如何创建一个标签

$ svn copy http://svn.seagullproject.org/svn/seagull/trunk http://svn.seagullproject.org/svn/seagull/branches/foo

如何导出一个版本

$ svn export http://svn.seagullproject.org/svn/seagull/trunk

如何更新已存在的拷贝

务必要进入安装Seagull所在的目录。如果你将Seagull checked out到/home/user/seagull,在运行update命令之前,请务必cd /home/user/seagull

$ svn update

如何提交修补

浏览创建与SubmittingPatches部分

如何合并

这个场景举例说明了如何将bugfix分枝整合到trunk中.

首先cd到trunk中

$ cd /var/www/html/seagull/trunk

首先,取得上次整合到trunk的版本号

$ svn log --stop-on-copy

比方说版本是1823

运行合并时使用 a –dry-run,如果你很肯定就不用了

$ svn --dry-run merge -r 1824:HEAD http://svn.seagullproject.org/svn/seagull/branches/0.4-bugfix

标签描述的地方:

svn -r[evision] [revision when branched]:[revision of 'merge from'] [url of 'merge from']

在例子中省略了最后的参数,这是整合后文件的存放目录。这个被假定为”.”或当前目录.

如何转换一个存储库

如果使用相同的服务器

$ svn switch http://svn.seagullproject.org/svn/newrepos /path/to/local/copy

如果你打算从不能运行服务器转换到新服务器

$ svn switch --relocate http://seagull.phpkitchen.com:8172/svn/seagull/trunk http://svn.seagullproject.org/svn/seagull/trunk /path/to/local/copy

如何导入一个存储库

$ svnadmin create --fs-type fsfs /usr/local/svn/newrepos

(从1.2版本开始,subversion默认创建的文件系统类型是’fsfs’,你肯定很想用这种类型,因为BDB这种类型非常不稳定,尤其是BDB4.1)

然后设置相应的APACHE权限,并且:

$ svn import mylocaldir http://svn.seagullproject.org/svn/newrepos/mylocaldir

如何转出一个存储库并加载另一个文件系统到其中去

如果你误用了BDB这种类型,并且想用FSFS重建你的存储库。这是非常有用的。

转出已存在的存储库

$ svnadmin dump /usr/local/svn/oldrepos > myfile.dump

删除(并潜在地在备份)已存在的存储库

$ rm -rf /usr/local/svn/oldrepos

创建新的存储库

$ svnadmin create --fs-type fsfs /usr/local/svn/newrepos

加载转出文件

$svnadmin load /usr/local/svn/newrepos < myfile.dump

如何删除文件夹

$ svn remove http://svn.seagullproject.org/svn/seagulll/branches/folder_to_delete

How to setup svn:externals for vendor branches

SVN库中可以在和trunk,分支,标签一样的层次上为第三方库创建他们自己的分支

  • 创建顶层文件夹vendor
  • 进入文件夹并导入你的库目录,如repo/vendor/pea
  • 进入你的库目录并输入
    svn propedit svn:externals .
  • 如果你的环境没有设置编辑器,那么执行
    export EDITOR=vim
  • 你下面这样将vendor分支链接到你的库
    pear http://sdn.seagullsystems.com/svn/customer/project/trunk/pear
  • svn up from your local checkout,将第三方库放在正确的位置
  • 为所有用户提供SVN库的属性以便他们可以使用这个链接

如果修补一个已破坏的存储库

$ svnadmin verify /usr/local/svn/seagull
$ svnadmin recover /usr/local/svn/seagull
$ chown -R nobody /usr/local/svn/seagull

备份

$ /usr/local/src/subversion-1.1.4/tools/backup/hot-hackup.py /usr/local/svn/seagull /some/backup/dir

Post-commit hooks, closing tickets

你可在你提交的信息中传递参数,这些将以这种形式搜索文本

  command #1
  command #1, #2
  command #1 & #2 
  command #1 and #2

在一个信息中可以有多个命令。支持下列命令。每一个命令有多个写法,这样做主要是为了易于使用。

 closes, closing, closed, fixes, fixing, fixed
    The specified issue numbers are closed with the contents of this
    commit message being added to it. 

 references, refs, addresses, re 
   The specified issue numbers are left in their current status, but 
   the contents of this commit message are added to their notes.

提交一个message可以做什么。下面是一个非常复杂的例子: 3

Changed blah and foo to do this or that. Fixes #10 and #12, and refs #12.

这将关闭#10和#12,并添加记录到#12

删除.svn目录

find . -name '.svn' -type d -exec rm -rf {} \;

SVN 程序

参考资料

 
installation/fromsvn.txt · 上一次变更: 2007/03/08 14:45 通过 xinhaozheng
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki