我的QQ:18324258 朋友们,如果需要交流,请直接联系我的QQ,并说明相互学习,不要留给我QQ号,我不会动不动就上来看的。希望多交流,谢谢!

发布新日志

  • LINUX下自动增量备份

    2010-09-01 20:14:11

    svnsync 同步备份

    一、备份准备

    源服务器:172.16.91.4 linux

    库路径:/project/svn

    目标服务器:172.16.80.227 Windows

    库路径:e:\svnbak

    svn版本库1.6

    项目备份模式,使用URL模式

    在每次新增一个项目后,都需要进行同步备份设置。

    二、方法:

    1.在目标服务器上创建空项目, ecom项目为例.

    CMD中,进行D:\Program Files (x86)\Subversion\bin目录,执行 svnadmin create e:\svnbak\ecom [U1] 

    e:\svnbak\passwd\authz目录中,设置备份的用户的可写权限。

    2.e:\svnbak\ecom\hooks目录下,创建pre_revprop-change.bat文件,内容为空;

    3. 执行 初始化

    svnsync init http://172.16.80.227/svn/ecom   http://172.16.91.4/svn/ecom

    svnsync init 目标库 源库

    将向你询问登录的用户名和密码

    正确后,显示

    Copied properties for revision 0.

    4. 执行同步

    svnsync sync http://172.16.80.227/svn/ecom

    svnsync sync 目标库

    5.更新同步

    在源库的hooks下面,添加post-commit 脚本

    内容:

     #!/bin/sh

    REPOS="$1"

    TXN="$2"

    SVNSYNC=/opt/svn/bin/svnsync

    $SVNSYNC sync --non-interactive [U2] --username ssy[U3]  --password ****** http://172.16.80.227/svn/spi/

    即提交更新后,即执行同步命令,不进行交互

    post-commit 修改为svnroot组所有,并属可执行权限。

    三、说明:

    如果post-commit脚本出错,或者无可执行权限,在提交更新时会报错。

    可以在hooks目录,直接执行./post-commit命令来调试脚本。

    1.6版本要求一定要定义清楚SVN_HOME,所以在post-commit脚本中不要直接写/opt/svn/bin/svnsync sync --non-interactive --username ssy --password ssyying http://172.16.80.227/svn/spi/,否则即使直接执行./post-commit没有报错,在提交时钩子也无法执行。


     [U1]一定要全路径

     [U2]不需要交互

     [U3]适用于源和目标的用户密码都相同,如果不同,请查看svnsync命令的用法

  • SVN升级后总结

    2009-12-10 12:02:33


    背景:SVN要从1.4.4升级到1.6.6版本.并且从WINDOW下移植到LINUX下。
    经验:
    1、一定要写好计划,俺的计划可以细到了每一步操作,实际迁移的时候省了不少操作,并且不会遗漏。
    2、一定要搞好服务,不让SVN机器重启后,SVN就不能用了。这点俺之前验证过了。呵呵,某次偶然事件后证明了一次。
    问题:
    1、LINUX的权限问题未研究清楚, 临时报了佛脚,实际操作时还行,除了SVNMANAGER用不了以外。
    2、客户端版本没有验证,因为事前忘记下载旧的客户端了,自己机器又没有保存,现场下了一个,但没有安装,混乱中以为新版本已经删除,装了旧版本了呢。验证通过了,实际上没有验证,呵呵,第二天俺请假,搞支持的同事应该累晕了。
     教训:自己使用的版本绝对应该是大众化的,而不是高级的。哈哈!
    3、备份和备注限制,试了,但没有做,呵呵,现在用的SVN还是高风险的,因为无备份。这个检讨一下,没有办法,懒啊!
    其它没有什么啦,就是计划中遗漏的一些事了。不过表扬自己一下,考虑的还是比较周全。可惜中间试验阶段的一些经验教训有些没有记录下来。在时间和文档化有矛盾的情况下,总的有所取舍,这是没有办法的事情。
     
     
     
     
     
    真是觉得任何事都要计划啊,PP总说我做事没有计划,我很惭愧:不愿意动脑是我最大的缺点。我也不希望象她老人家第二天准备去个公园,头天心里就把所有事安排好了。我的乐趣就是想到什么做什么---我想这也是我总是肥肥的原因!---没思没想,过着咖啡猫一样的生活!
     
    切,不就是一只猪嘛。。。
  • 补丁发布中遇到的问题(二)

    2009-09-09 16:51:37

     1. 编译的脚本修改路径时,确保svn.ecom.src所定义的路径是能完整访问源码路径的。
     
     2. 制作补丁文件时,一定要从RAR文件中解压出来。
     3. 所有补丁文件对应的JIRA问题,要查看提交的文件是否正确(本次分支编译的一些文件在分支中都没有提交)。
     
     4. 如果是补丁文件发布,在院内的测试环境也必须是补丁方式更新,并且确认JIRA任务都已经关闭才发布。
     5. 如果ecom或ecom_seller里的类在ecom_service中也有使用的话,要进行说明,或者每次都发布ecom_service
     6. 以后发布的时候一定要附上修改的源文件。以防止漏掉文件。
  • 软件版本发布混乱的现状

    2009-08-31 14:58:43

    软件版本发布混乱的现状

     

    1、  机器成为性能瓶颈。 本来SVN了支持多个开发人员一起操作同一存储池,不会出现等待的现象。 但现在多个开发人员只使用同一台机上的SVN,结果机器成为了瓶颈。你要等待别人用完这台机,你才能用,浪费机器资源和等待时间。并且由于密码总是被默认保存,导致SVN操作出错,解决问题和返工也花费了大量的工作。

    2、  编译是在上传代码本机内执行的。 这里存在一个很大的漏洞。就是编译可能是正确的,但代码并没有上传到SVN。导致发布后备份的代码可能是不可用的。

    3、  版本规定后应该是不变的,无论你是提前发布还是延迟发布,不能因为版本号是按照日期格式来规定的,就随意修改版本号。导致几天几周后,版本和源码的对应关系根本找不到。

    4、  权限是严格限制的。不能为了操作文件随意在发布的版本上修改,并且要求管理员修改权限。 不遵守发布流程将会是混乱的流程。

    5、  工作环境要稳定,不要今天机器不稳定,换一台;明天系统不稳定,重新装一下。结果工作的大部分时间都用来在各种实验机上搞实验了。

     

    如果流程不适合,可以修改流程;否则流程不应该随便变更。

     

  • Ant脚本 ftp、telnet、ssh 使用(自动构建之五)

    2009-06-09 15:28:06

     

    1       编写脚本前说明

    1.1    需求:远程部署

    1.2    详细描述:

    1、将编译完成的文件COPY到远程服务器上。

    2、执行远程服务器上的批处理命令,进行清理TOMCAT,并进行发布。

    1.3    操作系统:

    Windows2008(ant编译机) windows2003(发布应用的服务器)

    1.4    依赖:

    jakarta-oro-2.0.8.jar

    下载地址:http://archive.apache.org/dist/jakarta/oro/

     commons-net-1.4.1.jar

    下载地址: http://apache.mirror.phpchina.com/commons/net/binaries/

    放在引用 LIB目录下,虽然ANT里特别提到不要放到ANT安装目录的LIB下,不过我还是放在下面了。

    1.5    类定义:

      <taskdef name="telnet" classname="org.apache.tools.ant.taskdefs.optional.net.TelnetTask"/>

    1.6    其它说明:

    1、           使用FTP时,必须使用被动模式。服务器上需要安装FTP服务。

    2、           使用TELNET时,服务器端的TELNET服务需要打开。并且不使用验证方式NTLM。可以使用tlntadmn设置。

    3、           使用SSH时,服务器上也需要安装SSH服务。

    2       脚本例子

    2.1    ANT FTP 脚本

    <?xml version="1.0"?>
    <project>  

       <target name="ftp" description="ftp" >

          <ftp server="172.16.91.4"

                  userid="ftp"

                  password="ftp">

             <fileset dir ="${RELEASE_12580_DIR}">

             </fileset>

         </ftp>

    </target>

    </project> 

     

    2.2    ANT TELNET 脚本

     

    <?xml version="1.0"?>
    <project>  

      <target name="telnet" description=" telnet ">

        <telnet userid="administrator" password="**********"

                 server="172.16.80.228" port="23" initialCR="yes" timeout="50">

           <read timeout="30">*</read>

           <write>start  e: \test.bat</write>

        </telnet>

      </target>

    </project> 

     

    出现的问题:

    1、           使用ANT调用FTP时,客户端的防火墙需要进行设置,不限制FTP程序。

    2、           TELNETWINDOW的支持感觉很差,尝试了多次,有时成功有时不成功。最终放弃。TELNET不支持进行本地某个目录。如<write>cd e:\test</write> 这样是不可以的。另外由于不能进入本地的某个目录,所以也无法使用<read timeout="30">e:\test</read>来验证是否进入想要登录的目录 ,无法决定是否发送下次指令。而ANTTELNET只有<read>指令读取成功,才会进行下一条。所以发送<write>指令无法控制。

    3、           还有一个问题是,telnet到服务器后,用tlntadmn s查看,都是一连接,就马上断开了,所以有时无法执行远程的批处理命令。不能稳定地运行。目前不知道解决方法

    2.3    ANT SSH脚本

     <?xml version="1.0"?>
    <project>  

     <target name="sshexec" description="sshexec”

         <sshexec host="172.16.91.4"

            username="administrator"

              assword="***********"

              port="22"

              trust="true"

              command="i:/ecom/deploy_test.bat"/>

       </target> 

     </project>  

     

  • SVN本地文件锁定,无法clean [2009年06月09日]

    2009-06-09 09:31:54

    SVN 本地更新时,由于一些操作中断更新,如磁盘空间不够,用户取消。  可能会造成本地文件被锁定的情况。一般出现这种情况的解决方法:

    1、可以使用SVN clean up来清除锁定。

    2、如果不是本目录锁定,系统提示上一层目录锁定,需要到上一层或者根目录中清除。

    3.如果在根目录下都无法clean的话,一般采取的方法是另外找一个目录重新CHECKOUT。但有时有时SVN目录下可能有一些自己本地修改的文件,还未提交到SVN服务器,这时重新CHECKOUT需要注意本地文件的备份,并且不要强制覆盖服务器上其它人修改的内容。

    4.如果觉得第3种很麻烦,可以考虑这样的方法。其实SVN加锁会在.SVN(隐藏文件)中生成一个名字叫lock的文件(无后缀),查找所有的,手工删除。然后再尝试更新,系统可能会提示某个.base文件无法访问。找到它,把相关的文件或其所在的目录删除,重新UPDATE。工作量就小多了。

  • 一次补丁发布错误的教训

    2009-04-28 15:39:24

    雪儿(18324258) 15:09:08
    遇到过这个问题吗? 一个文件,用xcopy命令拷贝到另一处时,文件大小改变了。 发现是因为路径中有空格,没有用引号包含起来。
    雪儿(18324258) 15:09:23
    但为什么生成的文件都正确。
     梦  轩(452614253) 15:09:52
    那没有碰到过。你不带空格拷贝大小会变吗?
    雪儿(18324258) 15:10:47
    不会。
    雪儿(18324258) 15:11:02
    导致我昨天补丁发布成功,今天开发人员查了一上午
     梦  轩(452614253) 15:11:05
    我只知道windows下面如果磁盘分区类型不一样,簇的大小也不一样,在copy的时候可能会有大小相差。。
     梦  轩(452614253) 15:11:21
    那不明白啥原因。。
    雪儿(18324258) 15:13:47
    气死我了。
    Zee(32913946) 15:19:19
     
    Zee(32913946) 15:19:23
    气啥呢?
    雪儿(18324258) 15:21:44
    昨天我搞了一晚上,今天开发人员查了一上午。最后发现是这个问题,其实我发现这个版本的文件比上个版本大许多。但以为是开发修改了很多内容,没有提出来。气自己没有早把疑问提出来,早解决问题啊。
    Zee(32913946) 15:22:29
     
    雪儿(18324258) 15:23:24
    还有,其实怀疑了,要去确认一下编译的内容,都不需要经过开发的。结果都没做。
    丁宁(5947956) 15:23:03
    一堑一智,么事
    曹向志(36115774) 15:23:28
    我的也有类似感触,当然我们发现问题时,就要去刨根问底,否则遗漏了问题
    雪儿(18324258) 15:24:56
    唉,只能做到下次不再犯了。
    雪儿(18324258) 15:25:40
    昨天开发提交错项目的事,也让自己觉得是开发的问题。
    雪儿(18324258) 15:26:02
    呵呵,两个问题都解决了。 以后开发提交,不用自己写文件了,所以也不会出错了。
    雪儿(18324258) 15:26:22
    写到我的BLOG上,作为警示。
  • SVN错误。

    2009-03-26 17:30:21

    更新本地的源代码<br/>svn: 'C:\Program Files\CruiseControl\projects\ECOM\sourcef\ecom\lib' is not a working copy
    svn: Cannot read from to 'C:\Program Files\CruiseControl\projects\ECOM\sourcef\ecom\lib\.svn\format': path refers to directory or read access is denied<br/>


    查找原因,发现是因为乌龟版本太低。需要升级。

    于是乎,从1.4.8升级到了1.5.3. 不过不太明白,服务器版本都1.4.4的,客户端版本干么就不给用了?

    升了级后,还是不能更新,要重新CHECKOUT。

    然后手工更新正常,ANT更新失败,加了日志,报"认证取消"的错误,查了XML,才发现用户的密码写死了,没有读取配置文件,修改用户密码,终于可以正常编译了。

  • SVN中遇到的问题

    2009-02-11 14:36:03

    1.Could not send request body

      查询原因,是因为外网访问,可能公司网络上传附件大小有限制,50M就会报错了。下载就没有问题。

    2. 403错误,无权限。

      先确定权限是否设置正确。最近遇到的两个问题,1.是因为项目名称中有1.1这样的符号,可能SVN无法识别。2.是由于项目名称修改了。重新提交时,没有提示项目不存在,而是提示无权限。

  • SVN服务器上存在文件名相同,字母大小写不同的问题

    2008-12-05 10:07:59

    今天遇到一个新问题,好久才解决,写上来,大家以后注意一下。

    是这样的,服务器上存在两个文件。但两件文件有一个字母大小写不同,在服务器上认为是两个不同的文件,但检出时WINDOWS认为他们是同一个文件,所以检出不了。 检出失败,报错为:

    svn: 不能复制“I:\scmback\rmpda\trunk\06_code\rmpda\serversrc\com\gpdi\rm\opt\hbm\.svn\tmp\text-base\BasMacRoom.hbm.xml.svn-base”到“I:\scmback\rmpda\trunk\06_code\rmpda\serversrc\com\gpdi\rm\opt\hbm\.svn\tmp\BasMacRoom.hbm.xml.tmp.tmp”: 系统找不到指定的文件。

    并且SVN已经锁定,不能进行clean,不能再更新。

    原因:SVN对检入的文件是区分大小写的。但WINDOWS下检出不区分。所以检出时存在同名文件,就报错。

    解决方法:使用版本浏览器中删除 。右键--》SVN-->Repo browser,打开后找到要删除的文件,删除就OK了。

    也请大家注意,如果文件的大小写有修改的话,尽量把原来的文件删除,再提交新的文件。
  • jira中无法弹出用户或组选择框的问题

    2008-10-21 12:11:42

    今天同行问到一个问题,是项目管理用户和JIRA管理员,但在增加组件时却无法弹出用户选择框为组件设置lead.

    查了N多种原因,花费了一上午时间,最后将她的用户和另外一个可以使用的用户进行比较,发现她比对方缺少了jira-developers的组。加入了这个组中,就搞定。

    我百思不得其解。因为我也是JIRA管理员,也没有加入jira-developers组,但都可以啊。最后查看了JIRA的帮助文档,发现jira-3.12的帮助文档里有这样的描述。

    jira global permission,对所有项目都适用,如图:

    里面有清楚的描述,控制用户或组的弹出必须有jira-developers的权限。这就解释了她为什么不能弹出用户选择窗口,而她的同事就可以的疑问。

    不过可以修改的,把那个browse user后面的组删除,就变成any-users了,全部都可以了。

    不过JIRA USERS后面的组可不要删除,否则登录进去后没有任何权限操作了。本来注册一个用户就默认是JIRA USER的,只是用来控制登录的。这个对管理操作不增加工作量,最好保留吧

    那我的为什么不加入也可以呢? 原因可能是因为我使用的JIRA是从3.6版本升级来的。而在3.6的文档中。

    如图:

    是允许所有用户打开用户列表的。

    所以我没有加入jira-developer组也没有遇到打不开用户列表的问题。 不过从3.6升级到了3.12,为什么JIRA不会用新的GLOBAL PERMISSION 去对原有的用户进行权限限制,就不知道了。

  • fisheye访问路径莫名变更的问题

    2008-10-17 09:30:10

    昨天在FISYEYE用它的SHUT DOWN停止了一下FISHEYE的服务器,今天重新启动,打开就上不去了。错误如图:

    很晕啊。结果发现点击链接居然可以访问。但访问的路径变成了http://lostname:port/orgl.OgnlContext@42614b38/

    也可以正常操作,只是访问的路径修改了。 只好用ADMIN用户进入,在global setting -->server setting里发现,http bind 和site url都被修改了。重新改回来了,就可以正常访问了。

    只是不明白问题是怎么出现的。之前我是没有手工设置site url的。

  • jira. svn和fisheye集成中的问题

    2008-10-16 16:27:45

    首先,集成已经成功了。在JIRA中的SVN配置中,选择weblink为fisheye.下面显示的一些File Added Format等都是默认的,看帮助文档只是提到要按照fisheye的安装进行修改。但怎么修改,却没有提到。

    配置完成后,点击Subversion Commits 下修改文件的链接,报404错误。我直接输入文件的链接也不能打开。

    我从FISHEYE中查看,发现要这样才能浏览到项目的具体信息。 http://hostname:port/browse/project_name.

    所以就将WEB_LINK的Format的前面修改为:http://hostname:port/browse/project_name.

    然后就搞定。

     

    上面的配置就行,下面的项目配置就OK.

    不过有个很麻烦的事情,就是WEBLINK配置完成后,修改提交不管用。总也改不了。要删掉项目,重新新建。就好晕啊

  • JIRA3.12与SVN的集成插件选择

    2008-10-15 09:04:14

    这两天,正在研究SVN与JIRA集成,发现JIRA中只能与其中一个版本库集成,而不能与所有版本进行集成。由于输入http://hostname/svn      总是报403 权限不够的错误,查询了许多资料,在SVN1.3版本后,由SVNListParentPath on 来控制可以显示库列表,但尝试了N次,却总是不行。最好才发现,原来是<Location /svn/>  而不是<Location /svn>,但SVN的教程中却是后者,比较郁闷。访问也是 http://hostname/svn/      这样就可以显示库列表了。      

  • SVN多库显示库列表

    2008-10-15 09:03:27

    SVN 多库列表显示。由于输入http://hostname/svn      总是报403 权限不够的错误,查询了许多资料,在SVN1.3版本后,由SVNListParentPath on 来控制可以显示库列表,但尝试了N次,却总是不行。最好才发现,原来是<Location /svn/>  而不是<Location /svn>,但SVN的教程中却是后者,比较郁闷。访问也是 http://hostname/svn/      这样就可以显示库列表了。      

     

  • svn importer的使用说明

    2008-04-29 17:05:25

    呵呵,因为公司要使用SVN,要把原来的VSS项目导入到SVN中,所以研究了一下这个工具。

    唉,结果呢,不支持中文目录和文件。

    目前采取的方式是代码可能大部分不包括中文,或者中文目录,可以修改一下使用这个工具来导入。

    文档呢,只要GET最新版本,手工来导入吧。不过就没有办法保留历史版本信息了。

    CVS部分还没有写,过段时间吧。

     

    谁有更好的办法,救命啊!!

Open Toolbar