配置管理

analyze.exe意外终止 Runtime Error!

使用VSS的Analyze.exe工具处理版本库时出现运行时异常(如图):
Runtime Error!
Program: C:\Program Files\Microsoft Visual SourceSafe\analyze.exe
This application has requested the Runtime to terminate it in an unusual way.Please contact the application’s support team for more information.

在Analyze.exe的GUI界面可以看到正在分析的文件是:e:\vss\be20\data\C\CIUAAAAA
经过Google的帮助,发现可以通过删除引起Analyze.exe出错的文件e:\vss\be20\data\C\CIUAAAAA再重新运行Analyze.exe即可解决运行时异常的问题

———————–附上解决此问题过程中的一些Analyze日志————————-
删除引起Analyze.exe出错的文件e:\vss\be20\data\C\CIUAAAAA后
Visual SourceSafe Analyze Version 8.0
Copyright (C) Microsoft Corporation. All rights reserved.

analyze.exe e:\vss\BE20\data

Database analysis in progress @ 09-03-02; 8:56.
File "e:\vss\be20\data\C\CIUAAAAA" not found
The item ‘ShowLBYTWNPayForm.aspx.cs’ (CIUAAAAA) is referenced as a child of ‘$/project/Payment/’ (yttaaaaa), but the file is missing or corrupted.
Analysis complete @ 09-03-02; 8:57
    Potentially serious errors or inconsistencies were found: run ANALYZE -F to fix these problems.

To fix the database problems, you can restart the analyze using the following command:
"C:\Program Files\Microsoft Visual SourceSafe\analyze.exe" -F -V3 -D "e:\vss\be20\data"

根据上次运行Analyze后的提示,执行"C:\Program Files\Microsoft Visual SourceSafe\analyze.exe" -F -V3 -D "e:\vss\be20\data"
Visual SourceSafe Analyze Version 8.0
Copyright (C) Microsoft Corporation. All rights reserved.

"C:\Program Files\Microsoft Visual SourceSafe\analyze.exe" -F -V3 -D "e:\vss\be20\data"

Database analysis in progress @ 09-03-02; 9:00.
Unable to open file ‘e:\vss\be20\data\C\CIUAAAAA’.
File "e:\vss\be20\data\C\CIUAAAAA" not found
The project LBYWfManage references a child whose physical file (CIUAAAAA) is missing or corrupted.
Analysis complete @ 09-03-02; 9:00
    Some errors or inconsistencies were found and fixed.

VSS成功修复了删除’e:\vss\be20\data\C\CIUAAAAA’引起的问题。

参考的文章:

Analyze.exe (2005) crashes
      http://social.msdn.microsoft.com/Forums/en-US/vssourcecontrol/thread/0b346d82-8db1-430d-965d-a0c020f355ef/
VSS文件丢失
      http://www.scmlife.com/dp-bbsthread-10440.html
Analyze Runtime Error C++
      http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=117952

图片附件:
vss_runtime error.gif

Subversion同步工具svnsync出错:Failed to get lock on destination repos

Subversion版本库同步工具:svnsync一文中提到了Subversion提供的同步工具svnsync,然而在使用svnsync同步两个版本库时经常出现如下的错误,并自动中断了同步操作:

Copied properties for revision 461.
svnsync: Server sent unexpected return value (502 Bad Gateway) in response to PR
OPFIND request for ‘/svn/!svn/vcc/default’

当再次运行 svnsync sync svn://localhost/jqueryjs 时,有可能出现“Failed to get lock on destination repos”的错误信息,使同步操作无法继续进行:

F:\Subversion>svnsync sync svn://localhost/jqueryjs
Failed to get lock on destination repos, currently held by ‘firehack:963c0909-45ad-644f-b383-7e35d445028f’
……
Failed to get lock on destination repos, currently held by ‘firehack:963c0909-45ad-644f-b383-7e35d445028f’
svnsync: Couldn’t get lock on destination repos after 10 attempts

解决办法:

删除SVN仓库修订号0  svn:sync-lock的保护.

svn propdel svn:sync-lock --revprop -r 0 http://some.domain.com/svn/projects 

参考:

使用svnsync遭遇 “Failed to get lock on……”

Subversion版本库同步工具:svnsync

svnsync.exe是Subversion提供的一个用于同步版本库的工具,通过svnsync.exe同时可以达到备份SVN版本库的目的。

svnsync的使用方法如下:

1、svnsync init
初始化,建立目标库和源库之间的同步关系
命令格式 svnsync init 目标库URL 源库URL
2、svnsync sync
真正的同步
命令格式 svnsync sync 目标库URL

如果我们需要将jQuery的SVN版本库(http://jqueryjs.googlecode.com/svn/)复制到本机来
具体操作过程如下:

1、在本机上,创建目标库
F:\Subversion>svnadmin   create   jqueryjs
将目标库创建在F:\Subversion\jqueryjs目录中,修改F:\Subversion\jqueryjs\conf目录下的配置文件,具体方法参考:
Subversion权限设置详解

2、修改目标库的脚本pre-revprop-change
此时如果直接运行 svnsync init svn://localhost/jqueryjs
http://jqueryjs.googlecode.com/svn 将提示创建pre-revprop-change的“钩子”
svnsync: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook

在hooks目录下新建 pre-revprop-change.bat 文件(Linux操作系统下为pre-revprop-change)文件的内容为:
exit 0;

3、初始化
F:\Subversion>svnsync init svn://localhost/jqueryjs
http://jqueryjs.googlecode.com/svn
Authentication realm: <svn://localhost:3690> d3ec8b15-78a3-9d4a-9d49-382b8d00a3cd
Password for ‘Administrator’:
Authentication realm: <svn://localhost:3690> d3ec8b15-78a3-9d4a-9d49-382b8d00a3cd
Username: jquery  //提示输入用户名
Password for ‘jquery’: ******** /提示输入密码
Copied properties for revision 0 (svn:sync-* properties skipped).

 4、同步
F:\Subversion>svnsync sync svn://localhost/jqueryjs
Transmitting file data …………
Committed revision 1.
Copied properties for revision 1.
Transmitting file data .
Committed revision 2.
Copied properties for revision 2.

参考:
svnsync:Subversion备份版本库的好工具
【版本控制之路】版本库的备份

F:\Subversion>svnsync help
general usage: svnsync SUBCOMMAND DEST_URL  [ARGS & OPTIONS ...]
Type ’svnsync help <subcommand>’ for help on a specific subcommand.
Type ’svnsync –version’ to see the program version and RA modules.

Available subcommands:
   initialize (init)
   synchronize (sync)
   copy-revprops
   help (?, h)

实现数据库的版本控制的思路

    数据库的版本控制与代码版本控制的区别在于数据库中的生产数据是现场创造的,当我们的表结构发生改变时,不能直接用drop table然后再create table,因为这样会导致生产数据丢失。而代码则完全由开发人员创造,可以用完全覆盖的方式升级。由于这点不同,致使数据库在版本控制的过程中必然要采用与代码不同的方法。

    软件过程有一个过程方法叫迭代过程。对数据库的版本化,我们也可以采用这种类似的方法——后一个版本的脚本依赖于前一个版本的脚本,即当你要把数据库升级到第n个版本时,你必须先把数据库升级到第(n-1)个版本,以此递归。

我对对于数据库版本化的具体思路如下:
1.只存在一个基线版本;

2.在基线版本后的修改都是修正版本;

3.版本号遵从的格式通常是:主版本号.次版本号.修正号
 修正版本SQL脚本的命名规则(表,视图,存储过程,用户,角色,规则,默认值,用户定义的数据类型,用户定义的函数,全文目录);
 a.涉及表、视图、存储过程、触发器的增加  版本号为:V1.1.0.0。(主版本号不变,次版本号加一,修正号归零)
 b.涉及表、视图、存储过程、触发器的更改、删除 版本号为:V1.2.1.0。(主版本号和次版本号不变,修正号加一)
 c.向表中增加、删除初始化数据的变化  版本号为:V1.2.1.1。(在修正号后增加一个标识)

4.SQL脚本的格式:
 每一个版本号为一个目录,目录下分别存放处理表、视图、存储过程等的SQL脚本;
/Database
├─V1.0.0.0
│      Full-Text.sql
│      Procedures.sql
│      Tables.sql
│      Views.sql

├─V1.1.0.0
│      Tables.sql
│      Views.sql

├─V1.1.1.0
│      Full-Text.sql
│      Procedures.sql
│      Tables.sql
│      Views.sql

├─V1.1.1.1
│      Tables.sql

└─V1.1.2.0
        Full-Text.sql
        Procedures.sql
        Tables.sql
        Views.sql

5.关于数据库中的版本说明及更新记录:
 在每个数据库中新建一个表,名称为DBVersion,用于记录数据库经历的版本记录以及最新的版本信息;

可用于SQL Server 2000的SQL代码
  1. if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[DBVersion]‘and OBJECTPROPERTY(id, N‘IsUserTable’) = 1)   
  2. drop table [dbo].[DBVersion]   
  3. GO   
  4. CREATE TABLE [dbo].[DBVersion] (   
  5.  [DB_ID] [int] IDENTITY (1, 1) NOT NULL ,   
  6.  [DB_Version] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,   
  7.  [DB_Update_Time] [datetime] NOT NULL ,   
  8.  [DB_Remark] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL    
  9. ON [PRIMARY]   
  10. GO  

 

6.编写程序以实现以下功能:
 读取Database目录的各个版本中的SQL文件,以实现升级或者新建数据。
 对于升级数据库需要能够根据DBVersion表中的信息自动选择需要导入的SQL文件;或者提示用户当前可以升级到哪一些版本。
 同时还需要有校验Database中版本的文件是否完整(包括版本完整和文件完整,这就需要存在一个校验文件);

 

参考Linux内核版本号的命名规则:

Linux内核 版本号命名规则
Linux内核的版本号是有一定的规则的,版本号遵从的格式通常是:主版本号.次版本号.修正号。
主版本号和次版本号标志着重要的功能变动;修正号表示较小的功能变动。
以2.6.12版本为例,
2代表主版本号,6代表次版本号,12代表修正号。
其中次版本号还有特定的意义:如果次版本
号是偶数,则表示该内核是一个可放心使用的稳定版;如果次版本号是奇数,则表示该内核加
入了一些测试的新功能,是一个内部可能存在BUG的测试版
。如:2.5.74表示是一个测试版就的内核,2.6.12表示是一个稳定版的内核。
我们可以从Linux官方网站上:http://www.kernel.org/下载最新的内核代码!
 

升级Subversion 1.5后Zend访问SVN出错

因为SourceForge被电信屏蔽(SourceForge无法访问的解决办法)光是下载升级Subversion 1.5 及 TortoiseSVN 所需的文件就花了不少时间,在文章的最下方提供了相就的下载链接,大家使用迅雷下载吧。

升级后,Zend Studio访问SVN项目出现如下错误:
svn.exe add E:\MakeWeb\www.makeweb.com\v3\AC_RunActiveContent.js
svn: This client is too old to work with working copy ‘E:\MakeWeb\www.makeweb.com\v3′; please get a newer Subversion client
svn command finished execution

幸好这个问题我在之前也遇到过,解决的方法很简单:

第一个方法是把ZendStudio安装目录中的SVN客户端工具升级一下

 将CollabNet Subversion Server安装目录中的svn.exe及动态链接库文件复制到Zend Studio安装目录的SVN目录中(如:E:\Program Files\Zend\ZendStudio-5.5.1\bin\SourceControl\svn)

第二个方法是在ZendStudio首选项的“Source Control”标签中,将基本设置中的“Path to SVN”指向CollabNet Subversion Server安装目录中的svn.exe(如:E:\Program Files\CollabNet Subversion Server\svn.exe)

在Zend Studio中再次执行Subversion命令,正确完成:

E:\Program Files\Zend\ZendStudio-5.5.1\bin\SourceControl\svn\svn.exe commit E:\MakeWeb\www.makeweb.com\v3\include -F E:\Temp\jsvn58187.tmp –non-interactive
Adding         E:\MakeWeb\www.makeweb.com\v3\include\AC_RunActiveContent.js
Transmitting file data .
Committed revision 43.
svn command finished execution

分享一下安装Subversion需要的软件

在微软skydrive中,通过以下地址访问:

所需软件的列表:http://cid-358ab75ae8d73bb3.skydrive.live.com/browse.aspx/Public/Subversion

直接下载:
CollabNetSubversion-server-1.5.zip服务器端
http://cid-358ab75ae8d73bb3.skydrive.live.com/self.aspx/Public/Subversion/CollabNetSubversion-server-1.5.zip

subversion-1.5.0.zip源代码
http://cid-358ab75ae8d73bb3.skydrive.live.com/self.aspx/Public/Subversion/subversion-1.5.0.zip

TortoiseSVN-1.5.0.13316-win32-svn-1.5.0.msi
http://cid-358ab75ae8d73bb3.skydrive.live.com/self.aspx/Public/Subversion/TortoiseSVN-1.5.0.13316-win32-svn-1.5.0.msi

TortoiseSVN简体中文语言包:LanguagePack|_1.5.0.13316-win32-zh|_CN.msi
http://cid-358ab75ae8d73bb3.skydrive.live.com/self.aspx/Public/Subversion/LanguagePack|_1.5.0.13316-win32-zh|_CN.msi

Zend Studio:版本控制SVN/CVS使用简介

CVS与SubVersion有两个出色的开源的版本控制软件,Zend Studio 4只支持CVS, Zend Studio 5 加入SubVersion的支持,本文将以SubVersion与Zend Studio集成使用为例做说明。
Zend Studio默认使用CVS,可在“工具”->“首选项”->“source control”中选择Subversion即可。
配置Zend Studio客户端使用SVN:
打开“工具”->“SubVersion”->”checkout“,显示对话框
Module ULR 指要下载的源程序在源码库的位置,工作目录是下载到本机的程序存放位置,如果所填目录不存在,则程序自动创建。
用户名密码如果不需要的时候默认为空。

Subversion菜单命令说明:
Update : 将svn 源码库端文件同步到本地的工作拷贝。
Commit: 提交当前工作拷贝的更改。这个地方是有可能出现代码冲突的。最安全的解决方法,先update一下,再修改程序并Commit。
Add :将当前文件添加到版本控制库中。原来该版本不处于版本控制之下。比如新建立的一个程序或者文件。
Delete: 将当前文件从版本控制库中删除,脱离svn版本控制。
Revert : 取消当前文件的所有的本地编辑。并且解决所有的冲突状态。
Resove : 删除工作拷贝文件或目录的“冲突”状态。
Status: 查看当前工作拷贝文件和目录的状态。
Diff : 比较当前文件与源码库中相应文件的不同。
Log : 当前文件的所有修改记录,从创建开始的每一次修改都能显示出来。

注意:上面的命令也可以在Zend Studio 左侧的项目区域对多个文件或文件夹同时操作。

在修改完成之后,可以到程序运行服务器的项目目录下svn update一下,就可得到最新的程序。

Svn高级操作:
a. 解决冲突(合并别人的修改)
b. 分支与合并