链接:http://www.cnblogs.com/FlyAway2013/p/5633331.html
分类:SVN
使用SVN只检出一个文件或空目录
有时svn目录里有许多文件,但只想检出其中一部分甚至一个,可以使用以下命令检出空目录
1 |
svn co - -depth=empty svn://svn.***.com |
再在这个空目录里update要检出的文件:
1 |
svn update index.php |
【参考:http://www.cnblogs.com/leaven/p/4386915.html】
svn:Checksum mismatch while updating
解决方法
svn update – -set-depth empty
svn update – -set-depth infinity
【摘自:】http://www.cnblogs.com/MysticBoy/p/4261259.html
How to Install Subversion (SVN) 1.9 on CentOS/RHEL 7/6/5
Thanks to Wandisco, which is maintaining the rpm packages for latest Subversion version. This article will help you to install subversion 1.9 ( svn client ) on CentOS/RHEL 7/6/5 Systems. If you want to configure Subversion server visit this article.
Step 1: Setup Yum Repository
Firstly we need to configure yum repository in our system. Create a new repo file/etc/yum.repos.d/wandisco-svn.repo and add following content as per your operating system version.
1 2 3 4 5 |
[WandiscoSVN] name=Wandisco SVN Repo baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.9/RPMS/$basearch/ enabled=1 gpgcheck=0 |
Step 2: Install Subversion 1.9
Before installing latest package remove existing subversion packages from system to remove conflict.
1 |
# yum remove subversion* |
Now install latest available Subversion package using yum command line package manager utility.
1 2 |
# yum clean all # yum install subversion |
Step 3: Verify Subversion Version
At this stage you have successfully install Subversion client on your system. Lets use following command to verify version of svn client.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# svn --version svn, version 1.9.3 (r1718519) compiled Dec 9 2015, 12:43:34 on x86_64-redhat-linux-gnu Copyright (C) 2015 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ The following repository access (RA) modules are available: * ra_svn : Module for accessing a repository using the svn network protocol. - with Cyrus SASL authentication - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - using serf 1.3.7 (compiled with 1.3.7) - handles 'http' scheme - handles 'https' scheme The following authentication credential caches are available: * Plaintext cache in /root/.subversion * Gnome Keyring * GPG-Agent |
References:
1. http://opensource.wandisco.com/
2.http://tecadmin.net/install-svn-1-9-on-centos/
svn 上为不同用户设置不同文件夹访问权限
当系统存在许多文件,只希望不同的人员操作指定的目录或文件时,可以通过SVN为其分配权限,使其只能checkout / update 指定目录或文件,其他基础支持文件(如系统运行所必须的基本文件),可以直接拷贝到操作员本地的执行环境目录中。
在SVN库中,像如下配置权限:
文件 –> /conf/auth
1 2 3 4 5 6 7 8 9 |
[groups] admin=des partner=Lee [/addons/foo_directory] @partner = rw @admin=rw *= |
注意,/addons/foo_directory 是当前SVN项目下的目录,将某个目录分配给指定操作员时,不要斜杠/
迁移SVN库
场景:
在多台服务器上都有SVN库,为了统一管理,将所有的SVN库集中在一台服务器上,以便管理。
实现:
①将不同服务器上的SVN库中的项目拷贝到统一的SVN库中。
②在checkout出来的项目中执行以下语句,从而对应新的svn库的url。
1 |
svn switch --relocate 原SVN库中该项目的url 新SVN库中该项目的url |
【参考:】http://blog.chinaunix.net/uid-7553302-id-64854.html
MAC(OSX), svn:This client is too old to work with working copy '…'
场景:
在MAC的终端(terminal)上使用svn时,提示“svn:This client is too old to work with working copy ‘…’”
原因:
主要原因是新安装一高版本的svn客户端,使得版本库中的文件格式发生了变化,退回使用旧版本svn时发生了不兼容现象,于是出现标题所示错误。
解决:
①降低版本库中文件的格式,使其还原到旧版本。
具体参考官方信息:http://subversion.apache.org/faq.html#working-copy-format-change
②安装高版本svn客户端。
具体步骤:
1.下载安装最新版svn。
查看当前svn版本:在终端中执行 svn --version
下载、安装更高版本svn:http://www.wandisco.com/subversion/download#osx
备注:新版svn一般会安装在/opt/subversion/bin中,具体看安装步骤中的提示,如下图
2.修改使用svn时的路径。
在终端中执行以下代码,修改.profile文件(该文件在用户家目录下)。
第一步,进入用户家目录:
cd ~
第二步,编辑.profile文件:
sudo vim .profile ,并将新安装的svn的路径添加在最上方,如下图
3.此时,重新打开一个终端,若使用命令 svn --version 应可查看当前svn版本为最新版。
备注:若仍显示旧版本号,重新打开一个终端再查看svn版本号;
若仍然显示旧版本号,更改原svn目录名(如 sudo mv /usr/bin/svn /usr/bin/svn.old ,若不清楚svn路径,试着使用命令 whereis svn 查找);
若还显示旧版本号,应该是修改.profile文件失败,重新检查第2步骤是否有正确执行。
【参考:】
http://redfinsolutions.com/blog/update-subversion-mac-os-x
http://www.tech-recipes.com/rx/2621/os_x_change_path_environment_variable/
http://www.wandisco.com/subversion/download#osx
SVN之commit后自动update网站内容
目的:
本地修改SVN库里的文件后,commit时,希望另一checkout出来的代码能自动更新。
应用场景:
本地、线上网站代码均是通过SVN来checkout出来的,在本地commit新代码后,网站代码会自动更新,便于修改网站内容,且通过SVN实现了版本库管理。
方法:
在对应的SVN库中的项目库里,修改hook目录。
①将hook目录下的post-commit.tmpl文件更名为post-commit
②编辑该post-commit文件,在末尾处添加以下代码
1 2 |
export LANG="zh_CN.UTF-8" svn update /var/www/html/项目名 --username test --password 123456 --no-auth-cache |
③给该post-commit文件赋予可执行权限
1 |
chmod 777 post-commit |
备注:
①不要乱加空格。
②可以把不需要的默认代码注释掉,以下是默认代码,可在行首加符号“#”来注释。
1 2 3 4 |
REPOS="$1" REV="$2" mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf |
svn 使用参考资料
- 忽略某些文件:
- http://spiritfrog.iteye.com/blog/445425
- 更改文件权限:
- http://www.111cn.net/sys/linux/47964.htm
- http://www.subversion.org.cn/svnbook/nightly/svn.ref.svn.c.propset.html
windows右键菜单之删除所有后缀为svn的目录
目的:
添加右键菜单项“DeleteSVN”,用于将某SVN库里的所有.svn目录删除
操作:
新建后缀为reg的文件,并写入以下内容:
1 2 3 4 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVN] @="Delete SVN Folders" [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVNcommand] @="cmd.exe /c "TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r "%1" %%f IN (.svn) DO RD /s /q "%%f" "" |
执行此文件即可。 继续阅读“windows右键菜单之删除所有后缀为svn的目录”