文章目录:
简述svn工具工作模式
1.初始化版本库:
将已有的文件Import到一个版本库rep中。
2.团队成员在本地建立work文件夹,用该文件夹Checkout版本库rep,则团队成员就获得了该项目的一个拷贝。
3 团队成员进行修改操作,完成后commit。
4.www服务器目录下建立相应项目文件夹,该文件夹Checkout版本库rep,保持更新,并且禁止commit
hook中post-commit.tmpl修改为post-commit.bat并修改如下代码:可以让www和SVN直接同步。而不需要执行上面所说的第4步。
REPOS="$1"
REV="$2"
SET SVN=E:/SVNserver/bin/svn.exe
SET DIR=D:/httproot/mySVN
CALL %SVN% update %DIR%
以上是Win下 post-commit 的配置(该配置文件是当向svnserver提交commit请求成功后执行的脚本,通常人们用来向管理员发Email,我用它做测试服务器的同步)。
下面是RHEL ES4的配置,不过估计大部分linux都差不多。
一开始将 post-commit 配置为,
svn update /var/www/html
结果当win本地提交后,linux上的apache下的www没有同步更新,郁闷......
从网上查了一堆资料,最有用的是说svn的hooks在无环境变量的情况下执行(为安全起见),也就是说post-commit下的shell命令要用绝对路径。一看我的配置 /var/www/html 就是绝对路径啊,继续郁闷。
接下来做了个测试,在post-commit中加上如下语句, cp /var/svn/aa.txt /var/www/html
当win向linux的svn提交后发现cp命令成功了。然而/var/www/html下仍然没有与版本库同步,也就是
svn update /var/www/html 仍然没有执行。 太郁闷了....
后来在 svn的mail-list里查到一篇文章说在post-commit中写入下测试代码
exec /tmp/svn-up.out 21
PATH=/usr/local/bin:/usr/bin:/bin
cd /var/www/html || exit 1
ls -ld
id
touch foo rm -f foo # 测试html目录是否对操作svn的用户开放写入权限
svn update
exit 0
执行後到 /tmp/svn-up.out 21中查看错误信息:
偶yeah终于看到错误在哪了,svn提示:
svn :Can`t recode string
然后再查这个问题,搜索的结果是修改字符集环境变量,我locale了一下我的是
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
LC_COLLATE="zh_CN.GB18030"
LC_MONETARY="zh_CN.GB18030"
LC_MESSAGES="zh_CN.GB18030"
LC_PAPER="zh_CN.GB18030"
LC_NAME="zh_CN.GB18030"
LC_ADDRESS="zh_CN.GB18030"
LC_TELEPHONE="zh_CN.GB18030"
LC_MEASUREMENT="zh_CN.GB18030"
LC_IDENTIFICATION="zh_CN.GB18030"
LC_ALL=
于是将post-commit加一句 export LANG="zh_CN.GB2312"最后整个文件改为:
export LANG="zh_CN.GB2312"
/usr/bin/svn update /var/www/html
exit 0
一切OK了,其实就加了一句,告诉svn用什么字符集来编码。
我汗!!!!搞电脑的中国人什么时候才不被字符集纠缠啊!!!
相信Thumbs.db这个文件大家都见过。它是在windows下为了加速图片缩略而生成的文件,在每个有图片的文件夹里都有这东西。
YY你说那么多和SVN有啥关系啊!!
当小组成员在win下commit时会把Thumbs.db也一并提交上去,你到linux下一find Thumbs.db会发现所有img的文件夹里都有Thumbs.db,看着很不顺眼,而且据说这东西可能带毒。。。
这个问题我是那么处理的。
(1)首先在win下搜索工作文件夹里的所有Thumbs.db,删除之。然后commit
(2)然后再lin下find Thumbs.db,嗯没有了。
(3)最关键的一步:要用绝后患,需要在TortoiseSVN中设置
鼠标右键-TortoiseSVN-Settings(设置)-General (常规设置) - 在右侧 "Golbal ignore pattern"(全局忽略样式)内填入Thumbs.db- 确定;
这样Thumbs.db每次都会被忽略也就不会再跑到SVN服务器上了。
这样做需要对每台客户机进行设置,希望找到从服务器端设置的方法。
svn commit 提示missing or not locked
事件描述:
work文件夹下有个文件夹叫images,在工作文件夹下删除images后,执行svn commit ,结果提示:
svn: Working copy '/images' is missing or not locked
上网搜了一下,有说cleanup能解决最后以失败告终。
网上说产生这个问题的原理是:
“一些动态生成文件的文件夹造成的,解决的办法就将此文件夹从SVN资源库中删除,并在工程中把此文件夹加入到svn:ignore属性中,这样,SVN将不会对此文件夹进行控制,而且,我们也不需要对动态生成文件的文件夹进行控制。”
所以解决这个问题的思路大致是:先手动将版本库中出现问题的文件处理成与工作文件夹相同的状态。然后让工作文件夹与版本库同步。之后,执行commit。
具体步骤:(一开始最好在工作文件夹下执行clearup)
1、用Tortoises的Repo-browser打开版本库,删除images。
2、此时执行svn status |grep images 显示
! /images
说明images项目已经丢失(例如,你使用svn移动或者删除了它)。
3、执行svn update /images 单独更新改文件。此时显示:
D /images
说明/images是预定义要删除的项目。
4、最后执行svn commit -m “messages”
svn 中的add 和commit命令有何区别啊,谢谢
svn 中的add 和commit的区别在于:
add会将新增的文件加入到编译器中,而不会将修改的文件添加进去。
commit则会将修改的文件添加到编译器中,同时也会将新增的文件添加进去。
如果是只有新增文件使用add,有新增文件又有修改文件或只有修改文件请使用commit。
扩展资料:
SVN安装
(1)首先,到SVN的官方网站htp:/subversion.tigris.org下载最新版本的SVN服务器安装程序。
(2)运行安装程序,安装过程与普通软件的安装过程基本相同,例如F:ASubversion。其余步骤都采用默认设置,依次单击Next按钮,直至安装结束。
参考资料来源:百度百科-svn
如何操作使用svn?
操作使用svn需要在我们的本地硬盘中创建一个新建的空的文件夹,找到检出选项。然后按照步骤一步步进行编辑之后提交到SVN。
1、将版本库中的资源检出到本地工作空间中,首先在我们的本地硬盘中创建一个新建的空的文件夹,比如:E:\Proj_trunk。右击文件夹,选择检出选项,如下图所示:
2、检出操作,如下图所示:
3、当出现如下图所示,这说明已经检出成功了,如下图所示:
4、更新工作副本使之成为版本库中的最新的文件,如下图所示:
5、当更新完毕之后,svn将显示更新的文件的数量和更新的次数,如下图所示:
6、对工作副本进行编辑之后提交到SVN,在右键菜单中点击SVN Commit,如下图所示:
7、最后提交前写好信息,点击确定就完成了。
注意事项:
1、统一在资源库中进行更新、添加、提交等一系列事务。因为在资源库中,对各项待改变或已改变的文件有很直观的比较。
2、提交的时候必须写日志,一个团队中可能有多个人对一个文件进行操作,如果每个人提交的时候不记录本次需要提交的内容,可能会造成以后该文件出错时。
3、提交之前必须更新,因为在提交之前并不知道别人是否对你提交的文件已经做了修改。所以第一部分的时候,才要求各位在资源库中进行操作。
4、反复查看确保正确的前提下,勤更新勤提交。
5、提交只提交自己修改的文件,提交之前检查是否是需要提交的文件。
svn文件冲突后的三个文件要怎么解决
方法/步骤
1
通过SVN客户端更新需要的文件,如果出现有感叹号的文件,找到出现感叹号的文件。
2
选择感叹号文件,即冲突文件,单击鼠标右键对冲突文件进行编辑操作,如下图所示:
3
进入冲突编辑页面对出现问号的部分进行调整,如下图所示:
4
冲突文件调整过程中,可以选择使用自己的版本或对方版本或两个都使用,如下图所示:
5
完成后,点击上图【save】进行保存,至些svn的冲突文件就处理好了,重新提交就可以。
END
注意事项
冲突文件内部的冲突要全部解决才能保存
/tmp/svn-up.out 21中查看错误信息:偶yeah终于看到错误在哪了,svn提示:svn :Can`t recode string然后再查这个问题,搜索的结果是修改字符集环境变量,我local
or not locked事件描述: work文件夹下有个文件夹叫images,在工作文件夹下删除images后,执行svn commit ,结果提示: svn: Working
置为,svn update /var/www/html结果当win本地提交后,linux上的apache下的www没有同步更新,郁闷......从网上查了一堆资料,最有用的是说svn的hook