unity svn 材质丢失上传svn要同步哪些

Unity3D游戏开发之使用SVN对Unity进行版本控制_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Unity3D游戏开发之使用SVN对Unity进行版本控制
上传于||文档简介
&&关​于​这​个​国​内​各​种​简​单​到​家​的​文​章​让​人​搞​不​懂​,​而​且​场​景​合​并​,​p​r​e​f​a​b​合​并​等​关​键​问​题​都​说​没​法​解​决​,​其​实​本​质​就​是​因​为​它​们​都​是​二​进​制​文​件​,​所​以​S​V​N​没​法​对​其​合​并​,​但​事​实​上​U​n​i​t​y​是​支​持​把​这​些​文​件​都​强​制​使​用​文​本​的​!​后​面​会​提​到​。​另​外​本​人​英​文​能​力​有​限​,​渣​翻​译​。​虽​说​是​翻​译​,​但​其​实​没​照​搬​。
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢博客访问: 3700779
博文数量: 190
博客积分: 3600
博客等级: 中校
技术积分: 9350
注册时间:
专注系统运维、网络架构,研究技术解决方案,记录我的思想轨迹、工作学习、生活和关注的领域
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
昨日在与同事讨论如何将测试服务器上的数据同步到生产环境,前提是利用SVN来操作,当SVN更新到测试机上的代码,经过测试后,没有问题,那么就同步到生产环境,是否有SVN有一个操作可以分别完成这两个步骤呢?
在我以往搭建的SVN服务器中,提交后自动更新到测试机,可以用“钩子”来完成,只需要在hooks处理post-commit添加SVN的相关操作,包括:update、checkout、export等。当然也可以写入脚本。
我的想法也是想通过脚本同步到生产环境,但是SVN怎样触发这不同的动作呢?
是否可以通过SVN提交的不同动作来实现,如注释。查阅了相关资料,确实SVN没有这种功能,但SVN客户端可以配置选项来实现,如当前的动作是触发不同“钩子”,“钩子”写入不通的触发脚本。这样既复杂、又不易操作,完全PASS。
不修改SVN客户端的配置文件,让默认的提交动作使用同一个“钩子”,然后在里面写入更新到测试服务器和生产环境的脚本。测试服务器SVN每次更新都要求会执行,同步到生产环境必须通过读取代码中的一个文件值作判断,比如当文件内容为1,则脚本中断,为2脚本执行同步。这样,当要同步到生产环境,修改文件值就ok了。
这种方法确实可以实现,但我认为很少有人会用到这个方法吧,毕竟不能确保同步到生产环境不出问题。
最后补充下关于SVN更新操作的相关资料:
前言:其实利用SVN实时同步到WEB服务器即时展现出来的文章已经到处都是,但是我在做的时候 还是有不少的小问题,很多文章也没有提出来过,还有同步也是,我还是记录下自己做过的尤其是一些细节,时间一长又会忘掉了。
同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。
1、SVN的hooks
# start-commit 提交前触发事务
# pre-commit 提交完成前触发事务
# post-commit 提交完成时触发事务
# pre-revprop-change 版本属性修改前触发事务
# post-revprop-change 版本属性修改后触发事务
通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。
2、同步命令rsync的具体参数使用
3、具有基个语言的编程能力bash python perl都可以实现
post-commit具体实现细节
post-commit脚本
# -------------------------------------------------------------------------------
# Filename:
post-commit
# Revision:
# Website:
# Description: WEB server with synchronization code by SVN
# -------------------------------------------------------------------------------
# Copyright:
2009 (c) Ajian
# License:
# This prog you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software F either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# -------------------------------------------------------------------------------
#Version 1.0
#When users submit finished code, put the code up-to-date detection and synchronization to the WEB server, taking care not to include the delete operation.
#Set variable SVN=/usr/bin/svn WEB=/home/test_nokia/
RSYNC=/usr/bin/rsync
LOG=/tmp/rsync_test_nokia.log
WEBIP="192.168.0.23"
export LANG=en_US.UTF-8
#update the code from the SVN
$SVN update $WEB --username user --password
#If the previous command completed successfully, to continue the following
if [ $? == 0 ]
echo `date` >> $LOG
echo "##############################" >> $LOG
chown -R nobody:nobody /home/test_nokia/
#Synchronization code from the SVN server to the WEB server, notes:by the key
$RSYNC -vaztpH
--timeout=90
--exclude-from=/home/svn/exclude.list $WEB root@$WEBIP:/www/ >> $LOG
以上是具体的post-commit程序
注意事项:
1、一定要定义变量,主要是用过的命令的路径。因为SVN的考虑的安全问题,没有调用系统变量,如果手动执行是没有问题,但SVN自动执行就会无法执行了。
2、SVN update 之前一定要先手动checkout一份出来,还有这里一定要添加用户和密码 如果只是手动一样会更新,但自动一样的不行。
3、加上了对前一个命令的判断,如果update的时候出了问题,程序没有退出的话还会继续同步代码到WEB服务器上,这样会造成代码有问题
4、记得要设置所属用户,因为rsync可以同步文件属性,而且我们的WEB服务器一般都不是root用户,用户不正确会造成WEB程序无法正常工作。
5、建议最好记录日志,出错的时候可以很快的排错
6、最后最关键的数据同步,rsync的相关参数一定要清楚,这个就不说了。注意几个场景:
这里的环境是SVN服务器与WEB服务器是开的
把SVN服务器定义为源服务器 WEB服务器为目的服务器
场景一、如果目的WEB服务器为综合的混杂的,像只有一个WEB静态资源,用户提交的,自动生成的都在WEB的一个目录下,建议不要用--delete这个参数
上面这个程序就是这样,实现的是源服务器到目的服务器的更新和添加,而没有删除操作,WEB服务器的内容会多于源SVN的服务器的
场景二、实现镜像,即目的WEB服务器与源SVN服务器一样的数据,SVN上任何变化WEB上一样的变化,就需要--delete参数
场景三、不需要同步某些子目录,可能有些目录是缓存的临时垃圾目录,或者是专用的图片目录(而不是样式或者排版的)要用exclude这个参数
注意:这个参数的使用不用写绝对路径,只要目录名称就行 aa代表文件 aa/ 代表目录
,缺点就是如果有多个子目录都是一样的名称 那么这些名称就都不会被同步
建议用--exclude-from=/home/svn/exclude.list
用文件的形式可以方便的添加和删除
exclude.list
利用SVN的钩子还可以写出很多的程序来控制SVN 如代码提交前查看是否有写日志,是否有tab,有将换成空格,是否有不允许上传的文件,是否有超过限制大小的文件等等。
阅读(5953) | 评论(0) | 转发(3) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。【风宇冲】Shell与Unity&二:Shell与SVN
&原创文章如需转载请注明:转载自
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Shell与SVN
可以通过Shell进行SVN操作。(Mac OS自带SVN, Linux需要安装)
【一:SVN服务器配置】
1 创建SVN服务器:
svnadmin create /users/luoshengyu/svnlsy
2 conf文件夹配置权限
3 启动SVN:
svnserve -d -r /users/luoshengyu/svnlsy
4 导入Repository:
svn import
/users/luoshengyu/desktop/shell_svn/server&
svn://localhost/svnlsy/server
【二:SVN check out】
1 创建并进入文件夹
2 svn checkout svn://10.777.10.11/proj/apiDoc
svn checkout& svn://localhost/svnlsy
--username=lsy --password=123
【SVN client指令】
查看所有svn命令:svn help
输出svn状态:
1 进入SVN目录
svn add x.txt
svn commit x.txt -m "info"
1 进入SVN目录
2 svn update
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
pre_revprop-change 全部内容只有一行:exit 0
如果用拷贝同目录下的pre_revprop-change.tmpl 则必须删除最后三行的内容或替换为只有一行:exit 0cp pre_revprop-change.tmpl pre_revprop-changechmod +x pre_revprop-change不然下面初始化同步的时候,将停顿3. 执行 初始化
svnsync init svn://192.168.1.20/test (目标) &svn://192.168.1.10/data/svn/gmall&&(源 )--username=test --password=123456
即svnsync init 目标库 源库
将向你询问登录目标库和源库的用户名和密码,建议为两个库设置相同的用户名及相同的密码
正确后,显示
Copied properties for revision 0.4.执行同步在源机器执行
svnsync sync svn://192.168.1.20/test
即svnsync sync 目标库
正确执行后,显示
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
Committed revision 3.
Copied properties for revision 3.
Committed revision 4.
Copied properties for revision 4.
Committed revision 5.
Copied properties for revision 5.
Committed revision 6.
Copied properties for revision 6.
Committed revision 7.
Copied properties for revision 7.
Committed revision 8.
5.更新同步
在源库的hooks下面,添加post-commit 脚本
可拷贝post-commit.tmpl
cp post-commit.tmpl post-commit
把 post-commit 中,最后两行替换为
svnsync sync &--non-interactive svn://192.168.1.205/mu --sync-username user --sync-password user
即提交更新后,即执行同步命令,不进行交互要添加export LANG=zh_CN.UTF-8 (如果不添加会因为字符关系不会执行脚本)
把post-commit 设为755权限。
阅读(181)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'svn库同步到另一台服务器上的svn库',
blogAbstract:'源机器 192.168.0.10目标机器 192.168.0.20在目标机器上建立库 svnadmin create test2.在test目录下hooks目录下,建立\npre_revprop-change 全部内容只有一行:exit 0\n如果用拷贝同目录下的pre_revprop-change.tmpl 则必须删除最后三行的内容或替换为只有一行:exit 0cp pre_revprop-change.tmpl pre_revprop-changechmod +x pre_revprop-change不然下面初始化同步的时候,将停顿3. 执行 初始化\nsvnsync init svn://192.168.1.20/test (目标) ',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:1,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 unity3d svn 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信