
一般我在SVN版本库目录结构规划的时候,会把文档和代码分成两个大文件夹分别存放,以便于管理,但对SVN的 *** 作都是完全一样的首次需要提供,以后每次执行sync时,需要提供本地svn库的密码(你可以通过在本地保存svn用户和密码避免输入)。第i次执行sync时使用脚本自动定时同步就可以了。处于安全考虑,建立一个本地svn只读用户就可以了。首先要确定的一点,这两台SVN服务器中只能有一台可以进行读写 *** 作,另一台只能做备份用(你可以从上面读取数据,但不能修改上面的数据)。
这样的话,可以使用SVN自带的同步机制,也就是svnsync命令,将源SVN服务器上的内容同步到备份SVN服务器上。一般是把svnsync指令放到源SVN服务器的post-commit钩子中,这样每次commit成功后,源SVN服务器就会自动调用这个钩子,执行一次与备份服务器之间的同步。
svnsync的具体用法稍微有点复杂,你搜索一下吧,很多这方面介绍。
因为不了解你为什么要同时上传到两台SVN服务器,所以只能暂时给出这样一个方案,如果你能详细描述你要达成的目的,那可能还会有其它的方案。看情况;1:如果是二进制文件(比如声音视频)这种只要是2个人都在本地修改了,别人抢在你前面提交,你再提交就过期了就显示三角背景的感叹号。(本地会多生成2个带问号的版本识别文件,你们2个的起始版本、目前在服务器上的版本)
2:如果是文本文件(包括txt/c/java/js等等主流能被SVN自带的编辑工具识别的文件)就会出现2种情况
如果你们修改的不是同一行代码,那么你更新后本地还是红色,只是你本地的某些行数代码会和服务器同步(也就是别人的修改会自动合并到你本地)
如果你们修改的是同一行代码,那你更新后因为你们的对同一个文件同一个地方的写法不同就会导致服务器认为你们之间有理解上的冲突,就会用感叹号标识这个文件。(本地会多生产3个带问号的识别文件,你们2个的起始版本、你修改的文件、他修改的文件,如果用TSVN的编辑冲突,会d出一个文本框会把这3个版本都打开)这个是做一下update啊。。。说明你的服务器可能做了限定要求你在commit之前必须要做udpate
这样的话,你这个脚本写在post-commit中就起不到作用了吧。
你可以写到pre-commitbat或是start-commitbat中试一下看。使用SVN自带的同步工具svnsync可实现将一台SVN服务器上的某个版本库同步到另一台SVN服务器。
若要实现每次commit后自动同步,就把svnsync放到post-commit钩子里,每次commit后SVN服务器会自动调用这个钩子。
简单说思路就是这样了,具体实现细节你网上随便搜一下就是一大把,不重复贴了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)