打开版本库根目录
增加tmp用来保存更新记录
进入hooks目录
复制post-commit.tmpl 文件,新文件名称为post-commit 不需要后缀。
打开文件,注释文件内所有内容,增加以下内容
export LANG=zh_CN.UTF-8
REPOS=”$1″
REV=”$2″

SVN_PATH=svn://172.246.164.41/yiicms
WEB_PATH=/www/web/yiicms/public_html
LOG_PATH=/www/svn/storage/tmp/svn_update.log

echo “\n\n\n########## start commit ” ` date “+%Y-%m-%d %H:%M:%S”` ‘##################’ >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
svn update /www/web/yiicms/public_html/
$SVN_PATH update –username dreamzml –password 421126 $WEB_PATH –no-auth-cache >> $LOG_PATH
chown -R www:www $WEB_PATH

#mailer.py commit “$REPOS” “$REV” /path/to/mailer.conf
来源:http://blog.csdn.net/dreamzml/article/details/12856965

同步

有时候你发现svn add后,这个提交的数据又不需要了。这时候需要有svn revert来处理了。

比如

A testcase/perday.php

如何取消呢?

svn revert testcase/perday.php

会出现下面的提示:

已恢复“testcase/perday.php”

说明脚本已经恢复了到原来的状态,不受SVN 版本控制了。

如何恢复整个目录??有时候你将整个目录都svn add了,整个目录有不同深度的文件夹,这时候你需要用其他方式来解决
svn revert –depth=infinity .

注意:上面一条语句后面的.绝对不能少,否则你不会操作成功。这条语句也要在svn 目录的外层执行。不能跑到svn add后的目录里面去执行。

执行完以后出现“Reverted ‘library/Cmsbase/phpmailer’”
表示将phpmailer目录整个恢复到svn版本控制前了

在使用phpstrom 或者 Intellij IDEA的时候提示Can’t use Subversion command line client:svn让修复。

这个只需要安装Slik svn(下载网址:http://www.sliksvn.com/en/download)。

按照你的svn帮下载并按照

We provide a standalone command-line Subversion client for Windows. The installer contains all command line tools (svn, svnadmin, svnsync, svnserve, svnmucc) but no application bindings nor Apache modules. The tools are fully side-by-side compatible with other packages. Ideal for build systems, deploy scripts, et cetera.

我们为Windows提供了一个独立的命令行Subversion客户端。安装程序包含所有命令行工具(svn,svnadmin,svnsync,svnserve,svnmucc),但没有应用程序绑定或Apache模块。这些工具与其他包装完全并排兼容。理想的构建系统,部署脚本等。

注意事项:1.用命令提示符(管理员)

2.用命令工具  

msiexec  /package  yourpathfile

 

1、将文件checkout到本地目录

svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co

2、往版本库中添加新的文件

svn add file
例如:svn add test.php(添加test.php)
svn add *.PHP(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库

svn commit -m “LogMessage” [-N] [–no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test” test.php
简写:svn ci

4、加锁/解锁

svn lock -m “LockMessage” [–force] PATH
例如:svn lock -m “lock test file” test.php
svn unlock PATH

5、更新到某个版本

svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up

6、查看文件或者目录状态

1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st

7、删除文件

svn delete path -m “delete test fle”
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)

8、查看日志

svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息

svn info path
例如:svn info test.php
10、比较差异

svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di

11、将两个版本之间的差异合并到当前文件

svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN 帮助

svn help
svn help ci

Read More →