手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:windows

感谢老王的:Object-C之Windows版Hello, World!

感谢老王这篇文章,本来有自己想办法看看是不是能搞个ipt来玩玩。然后想自己学点苹果的开发语言的。
结果买了本object-c的书回来一看,人家上面就写了object-c是安装在mac下面的。当时,心都碎了
书也扔在那里几个月了。本以为这将进40块钱的书就算是扔了水里了。谁知道老王又贡献了这么一篇文章。很是感动。。。

老王说:

Mac笔记本实在是太贵了,所以一直没舍得买,如此一来,就只能在我的Windows操作系统上学Object-C了。

» 阅读全文

Tags: object-c, windows

Ubuntu创始人:Linux的未来并不在于对Windows的兼容性

Ubuntu的创始人Mark Shuttleworth最近对桌面Linux以及其未来发表了一些比较重要的言论,他说Linux的未来不在对Windows的兼容性上面。在其发言中,他特意提到了Wine这个程序——这是一个可以在Linux上提供对Windows程序的支持的程序,如果要想从Windows迁移到Linux,而你有些程序无法割舍,使用它再好不过,而且很多时候你会发现你想要的程序在Windows下才有。

Mark Shuttleworth称,类似Wine的兼容Windows的程序或者工程其重要程序不言而喻,但Linux的未来不在于对Windows的兼容性。 Linux与Windows有着本质的区别。linux作为自由软件,这个平台是否成功要依靠自身的发展,如果使用linux只是一种运行Windows 程序的媒介,那么linux永远不会有成功的那一天。
 
虽然他仅仅针对Ubuntu发表以上言论,但是很显然这番言论对任何linux版本都是合适的。正如他所说,在linux模拟运行 Windows程序并不能很好的抢占这个市场。linux开发者应该把重点放在核心应用上,让linux也可实现所有Windows才可实现的功能。

原文:alect
来自:http://www.cnbeta.com/articles/83517.htm

Tags: ubuntu, windows

ZZ:IIS7在Windows Server 2008 R2中的新改进

IIS团队刚刚发表了IIS7在Window Server 2008 R2 beta中的新改进.Windows Server 2008 R2包括对IIS7 Web服务器的增补,对已经是史上最好的IIS平台进行修正、完善、添加。 今天在Windows Server 2008 R2 Beta中IIS7改进的主要亮点:
内容发布扩展(FTP, WebDav)集成进Web服务器OS/集成Administration Pack扩展到Windows Server OS
新的IIS7  PowerShell Provider和Commandlet支持/丰富的Server Core应用程序托管
改进的FastCGI支持/IIS核心更改/IIS Best Practice Analyzer

过去的一年半中,IIS产品团队在IIS7平台上辛勤编写扩展,发布了beta、TC和RTW们来新增对优化媒体托管、Web内容发布、站点和服务器管理、部署和迁移、请求处理的支持。 没有我们在Windows Server 2008上IIS7中引入的架构变更,我们根本无法在12~18个月中进行创新,并构建面向生产环境、完全受支持的微软软件。现在在Windows Server 2008 R2, 我们对这个IIS7平台再做了一些改进、修正和完善。

今天在Windows Server 2008 R2 Beta中IIS7改进的主要亮点:


内容发布扩展(FTP, WebDav)集成进Web服务器OS

继承内容发布扩展 (FTP, WebDav)进Windows Server OS
在Windows Server 2008发布前很久,我们就开始研发完全重写的FTP服务器和我们的WebDav实现。08年早些时候,我们发布了Windows Server 2008 FTP发布服务下载,具有FTPS安全内容发布、IPv6支持、IIS管理器集成管理FTP/HTTP站点、更强大的日志和认证支持的特性。跟我们所有的扩展一样,Windows Server 2008 FTP发布服务受到微软产品支持的完全支持及由专家用户和产品团队提供的论坛支持。我们在Windows Server 2008 R2中已经做到的是将FTP发布服务集成到服务器操作系统。

从客户角度,这意味着:

    1. 当Windows Server 2008上已经安装了FTP发布服务,你必须在安装新FTP服务前移除旧版。在R2中,你可以作为IIS组件的一部分来安装新的FTP服务器,IIS setup会替换升级旧的FTP服务。

    2. 你可以得到FTP发布服务自2008年2月发布后的bug修复。

    3. 你可以使用新增的认证、日志、授权和home目录扩展性,这些在MSDN上会有文档。

我们也会在2009年5月发布一个更新过的Windows Server 2008 FTP发布服务下载,所以这部分客户也能利用这些bug修复和扩展性。或者说:

(2009年5月版FTP下载 + Windows Server 2008) == (Windows Server 2008 R2中的FTP特性)

但有如下例外:

Windows Server 2008 FTP发布服务始终是一个下载安装,而Windows Server 20008 R2和以后会集成FTP。

2008年7月发布的WebDav也是一样。WebDav for Windows Server 2008提 供了HTTP协议WebDAV扩展的全新实现(直至spec)。我们在Windows Server 2008 R2安装中包含了WebDav。WebDav大的新特性是支持locks。我们也会为Windows Server 2008发布一个支持lock的WebDav,同样是2009年5月。同样地:

(2009年5月版WebDav下载 + Windows Server 2008) == (Windows Server 2008 R2中的WebDav特性)

如下例外:

WebDav for Windows Server 2008 始终是一个下载安装,而Windows Server 20008 R2和以后会集成WebDav。

集成Administration Pack扩展到Windows Server OS

我们把IIS7 Administration Pack集成到Windows Server 2008 R2,为客户提供:

  1. 在IIS Manager中集成管理ASP.NET authorization,自定义错误,FastCGI,和and Request Filtering。

  2. 配置管理器,提供管理IIS7配置系统的可视化编辑器。如果你想试用一下,我们的IIS开发经理Carlos Aguilar Mares撰写了comprehensive blog on the Config Editor's capabilities一文。我最爱的配置管理器部分是脚本生成功能——对做演示非常管用:) 

我们并未将IIS Reports特性集成进Windows Server OS,如果你需要这个功能,你可以在IIS Administration Pack下载中得到。同样的,我们也会为Windows Server 2008用户提供更新的IIS Administration Pack,包括Windows Server 2008 R2种所有的修复和变更(除了集成安装)。

Windows Server 2008版的Administration Pack会和Windows Server 2008 R2一起发布,以确保功能和Windows Server 2008 R2一致。

新的IIS7  PowerShell Provider和Commandlet支持

IIS PowerShell provider,同样有Windows Server 2008版下载,允许用户使用PowerShell编程环境管理IIS,ASP.NET和自定义错误配置。是的,传说是真的——我们有为PowerShell用户们提供IIS:/>。我们的PowerShell支持提供了3个等级的支持:

  1. PowerShell provider: 如果你熟悉IIS配置系统,想直接用PS编程环境来管理配置。

  2. Low-level commandlets: 用我们的low-level commandlets集合来管理每个IIS设置,如果你需要这个程度的细粒度控制。

  3. Task-oriented commandlets: 用我们的面向任务commandlets来管理网站(例如:New-WebSite创建一个站点),备份和恢复web服务器配置及其他常见任务。

集成到Windows Server 2008 R2中,你可以使用Windows Server setup来安装PowerShell provider和60+个commandlets。

和FTP、WebDav一样:

(2009年5月版PowerShell下载 + Windows Server 2008) == (Windows Server 2008 R2中的PowerShell特性)

例外是:

PowerShell for Windows Server 2008 始终是一个下载安装,而Windows Server 20008 R2和以后会集成PowerShell 

更多的PowerShell支持信息,可以查看Group Program Manager和PowerShell大牛Thomas Deml的博客(http://blogs.iis.net/thomad)。

丰富的Server Core应用程序托管

Windows Server 2008 R2上,你可以在Server Core的IIS上跑ASP.NET应用。ASP.NET/CLR做了一些重构工作来确保ASP.NET网页的托管代码环境可以在Server Core上运行。哇!我们不仅能在Server Core上支持图片、媒体、PHP、传统ASP网页,也能跑ASP.NET应用。

Windows Server 2008 R2中的PowerShell 2.0版本处理远程管理,对Server Core安装和新的PowerShell provider很便利。你不仅能在Server Core IIS上托管你的所有应用,本地或远程通过新的IIS PowerShell Provider和commandlets来管理它们也更容易了。在Windows PowerShell blog上有PowerShell大法供参考。

改进的FastCGI支持

IIS7通过我们的FastCGI实现来支持PHP托管,我们在Windows Server 2008 R2 IIS7中持续翻新和提高FastCGI。增强的支持包括:

  1. 支持在IIS Manager中管理FastCGI设置。

  2. 当php.ini变化时自动刷新php-cgi.exe。这个版本中,IIS为每个进程池监视一个文件,如果文件被修改就会recycle这个进程池的FastCGI进程。此特性默认关闭,如果你(通过用户界面的一个设置)打开它,你可以指定监视的文件路径。

  3. FastCGI的FREB支持,你可以更有效的排错PHP和其他FastCGI相容应用。

  4. MaxInstance可以是动态——如果maxInstance设置为0,IIS自动监测系统负载并调整maxInstances。这允许我们优化PHP的性能。

  5. 基于特定错误的控制FastCGI错误行为的支持。

IIS核心更改

基于客户反馈和我们自己在IIS7平台开发扩展的体验,我们也对IIS7平台核心做了一些修改:

  1. 支持配置系统的自定义追踪。

  2. 通过配置轮询来审核或追踪配置变更的能力——这是来自托管商们的要求,特别是想要监视客户们更改配置系统。

  3. ASP.NET支持不同的CLR版本(例如,CLR4.0),随着多个CLR版本的使用,这个特性对开发者切换版本很重要。我们也将此功能向后移植到Windows Server 2008 SP2。

  4. Application pools的更好控制,可以为每应用程序池指定CLR设置,可以用新的Application Pool性能计数器监视性能。

  5. 可委派自定义错误,这是来自开发者的最多要求,他们想让非管理员在本地或远程改变自定义错误。

  6. IP restriction list的IPv6支持。

  7. Request filtering的更细粒度控制,特别对query strings来帮助防止SQL注入式攻击。Request filtering现在也支持请求特定的规则,使SQL注入规则仅对特定请求适用。

  8. Nego2支持,将允许内置支持LiveID providers,FedSSP,和更小粒的Kerberos/NTLM使能。

  9. 支持不要求密码的Managed Service Accounts域账号。

  10. AppPool identity支持——这个太复杂了,以后单独帖子会另行讲。

  11. 支持application pool预热,大型应用程序会需要"起动"一个应用程序池,这样最初的请求们会有更好的性能。

IIS Best Practice Analyzer
Windows Server 2008 R2在Server Manager里引入了一个新特性叫做Best Practice Analyzer。 BPA在Server Manager里提供单一控制台体验来管理跨不同服务器角色的配置的最优实践规则,如Exchange、AD和IIS。在Server Manager里,你可以对一些IIS规则运行BPA针对安全和性能的最优实践——例如,检查确认基本验证不会没有加SSL就启用。针对IIS的BPA规 则并不是巨细无遗,但它确实给予一组良好的核心提示作为起步。我们也会通过Server Manager来更新和增加这些规则。注意这个功能在Server Manager中,不在IIS Manager中。


当然,我们也修复了bugs。

你的反馈帮助了我们修炼IIS7,至今最好的Web服务器平台。今天你可以在这里下载Windows Server 2008 R2 beta,这不失为开始2009年的好办法!

译自:IISBlog
原文来自:http://www.cnbeta.com/articles/74751.htm

Tags: iis, windows, server, changelog

Windows下SVN服务器的架设

看完这篇文章后,两个字:郁闷。
理由是我刚刚装完visualSVN,结果就看到这篇文章了,由于已经有三个人在用这个SVN,想再更换也不方便,所以就不再更换了。不过文章还是要转一下的,作个备份还是很重要的,下次再换成标准的SVN服务器。
原文链接:http://www.phpweblog.net/fuyongjie/archive/2009/01/05/6265.html(由于原文也是转摘的,但我不知道最初的地址,只能用这个地址了)
原文如下:
作者: rocksun  来源:Subversion

Subversion安装成service

以前的svnserve要想成为windows服务,必须依赖于svnservice或其他工具。从Subversion1.4开始,Subversion本身就集成Windows服务的工具。

1,安装svnservice

在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一个安装服务的工具,叫做"Service Control",也就是sc.exe。

例如我的Subversion安装在"D:\Subversion",版本库在"D:\svnroot",而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:

sc create svnservice
binpath= "D:\Subversion\bin\svnserve.exe --service -r D:\svnroot"
displayname= "SVNService"
depend= Tcpip

请注意,因为便于察看,上面的命令分为多行,但在实际执行时应该在一行里。另外,在以前启动svnserve时会使用"-d"选项,也就是守护进程模式,在这里不能使用,会导致服务无法启动。同样,"-i"和"-t"选项也不能使用。

在命令行窗口执行完这个命令之后,服务还没有启动,你可以继续运行"net start svnservice"启动这个服务,然后使用"net stop svnservice"停止服务。

另 外还有两点需要小心处理。首先,如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c: \program files\subversion\”中,则命令应该写为“binpath= "\"c:\program files\subversion\bin\svnserve.exe\"”(“”中的内容),整个命令如下,红色部分是改变部分:

sc create svnservice
binpath= "\"D:\program files\Subversion\bin\svnserve.exe\" --service -r D:\svnroot"
displayname= "SVNService"
depend= Tcpip

其次,sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而后面必须有空格。

2,删除服务

如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行"net start svnservice","svnservice"就是我们创建服务时使用的名字。

3,配置服务是自动启动

默认情况下安装的服务不会随Windows的启动而启动,为了使svn服务能够随Windows启动而启动,需要修改一下"sc create"命令(首先要删除),增加"start= auto"选项:

sc create svnservice
binpath= "D:\Subversion\bin\svnserve.exe --service -r D:\svnroot"
displayname= "SVNService"
depend= Tcpip
start= auto

当然你也可以使用图形化的工具修改服务的属性,你可以在“开始->运行...”中执行"services.msc",然后在界面中修改。

Subversion的权限控制

1,认证(Authentication)和授权(Authorization)


这两个术语经常一起出现。其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在 Subversion里提供了“authz-db”文件,实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限,在Subversion 1.3之后,svnserve和Apache一样都可以使用“authz-db”文件。

2. svnserve下的配置文件

因为本文是以svnserve为例的,所以先介绍一下版本库目录的结构:

D:\SVNROOT\PROJECT1
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks

其中conf下面有三个文件:

authz
passwd
svnserve.conf

其中的“svnserve.conf”是这个版本库的配置文件,当使用svnserve时,这个配置文件决定了使用什么认证和授权文件:

password-db = passwd
authz-db = authz

上面的配置说明使用“svnserve.conf”同目录的passwd和authz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件,也就是我们本文主要介绍的文件。

注意:使用Apache作为服务器时,根本就不会参考“svnserve.conf”文件的内容,而是会参考Apache的配置。

3,基于svnserve的版本库文件布局

使用svnserve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-db和authz-db文件。下面是一个多版本库的目录:

D:\SVNROOT
├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
└─project2
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks

D:\SVNROOT下有两个目录project1和project2,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-db和authz-db文件。

password-db = ..\..\passwd

authz-db = ..\..\authz这样,D:\SVNROOT\passwd和D:\SVNROOT\authz就控制了所有版本库的svnserve访问。另外在 后面的操作中要关闭匿名访问,应该去掉“anon-access = none”前的“#”号,保证只有认证用户可以访问。

注意:还有一点需要注意,那就是svnserve的“realm”的值,在上面的设置下,应该保证所有的版本库使用相同的realm值,这样,对版本库的密码缓存可以在多个版本库之间共享,更多细节见客户端凭证缓存。

4,测试用户和组说明

版本库禁止任何匿名用户的访问,只对认证用户有效。

root:配置管理管理员,对版本库有完全的管理权限。

p1_admin1:project1的管理员,对project1有完全权限。
p1_d1:project1的开发者,对project1的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p1_t1:project1的测试者,对project1的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。

p2_admin1:project2的管理员,对project2有完全权限。
p2_d1:project2的开发者,对project2的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p2_t1:project2的测试者,对project2的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。

对应的组及组的用户:

p1_group_a:p1_admin1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_admin1
p2_group_d:p2_d1
p2_group_t:p2_t1

5,修改D:\SVNROOT\passwd文件

前面已经说过了,用户和密码文件应该是在D:\SVNROOT\passwd,所以我们为每一位用户设置权限,文件内容如下:

[users]
p1_admin1 = p1_admin1
p1_d1 = p1_d1
p1_t1 = p1_t1

p2_admin1 = p2_admin1
p2_d1 = p2_d1

p2_t1 = p2_t1为了便于验证,所有密码和用户名一致,如果你使用的是其他认证方式,这一步可能不同,但是用户名应该都是一样的。

6,配置授权,修改D:\SVNROOT\authz

[groups]
# 定义组信息

p1_group_a = p1_admin1
p1_group_d = p1_d1
p1_group_t = p1_t1

p2_group_a = p2_admin1
p2_group_d = p2_d1
p2_group_t = p2_t1

[/]
# 指定所有的版本库默认只读,root可读写
* = r
root = rw

[project1:/]
# 指定对版本库project1根目录的权限
@p1_group_a = rw
@p1_group_d = rw
@p1_group_t = r

[project1:/trunk/admin]
# 指定对版本库project1的/trunk/admin根目录的权限,
# p1_group_a读写,p1_group_d和p1_group_t没有任何权限。
@p1_group_a = rw
@p1_group_d =
@p1_group_t =

[project2:/]
# 指定对版本库project2根目录的权限
@p2_group_a = rw
@p2_group_d = rw
@p2_group_t = r

[project2:/trunk/admin]
# 指定对版本库project1的/trunk/admin根目录的权限
@p2_group_a = rw
@p2_group_d =
@p2_group_t =

经过以上设置以后,你会发现一些有趣的事情。当使用用户“p1_d1”,检出project1的trunk时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。

关 于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXP的UltraEdit里显示的文件格式为U8-DOS, 具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。

再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制。

Subversion备份

版本控制最关键的一件事是保证数据的安全性,不能因为磁盘损坏,程序故障造成版本库无可挽回的错误,为此必须制定较完备的备份策略。在Subversion中,我们有三种备份方式:完全备份,增量备份和同步版本库。

1, 完全备份

最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会 造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadmin hotcopy”命令,可以防止这种问题。

还记得我们的版本库目录吗?

D:\SVNROOT
├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
└─project2
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks

如果要把project1备份到d:\svnrootbak目录下,只需要运行:

svnadmin hotcopy d:\svnroot\project1 d:\svnrootbak\project1

但是我们作为配置管理员,必须想办法优化这个过程,如果我们这个目录下有许多版本库,需要为每个版本库写这样一条语句备份,为此我写了下面的脚本,实现备份一个目录下的所有版本库。我们在D:\SVNROOT下创建了两个文件,simpleBackup.bat:

@echo 正在备份版本库%1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!

这个文件仅仅是对“svnadmin hotcopy”的包装,然后是backup.bat:

echo off

rem Subversion的安装目录
set SVN_HOME="D:\Subversion"

rem 所有版本库的父目录
set SVN_ROOT=D:\svnroot

rem 备份的目录
set BACKUP_SVN_ROOT=D:\svnrootbak

set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log

mkdir %BACKUP_DIRECTORY%

rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simpleBackup.bat "%%~fI" %%~nI
goto end

:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
goto end

:end

你 在使用的时候,只需要修改backup.bat开头的三个路径,将两个脚本拷贝到“SVN_ROOT”下就可以了。根据以上的配置,你只需要运行 backup.bat,就可以把“SVN_ROOT”下的版本库都备份到“BACKUP_SVN_ROOT”里,并且存放在备份所在日的目录里,例如 “D:\svnrootbak\2006-10-22”。

虽然这部分工作很简单,可是必须有人定时地去执行这个操作(例如每周一凌晨),为了避免发生遗忘的情况,我们可以将这个操作加入到系统的at任务当中去,例如还是上面的环境,为了安装at任务,我们运行:

at 1:00 /every:M D:\svnroot\backup.bat这样在每周一凌晨1:00都会执行这个备份过程。当然备份在本机也是不安全的,你也许需要上传到别的机器,这个就要靠你自己去实现了。

2, 增量备份

尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。

增量备份通常要与完全备份结合使用,就像oracle数据库的归档日志,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。在我们这个例子中我们使用的是,svnadmin dump命令进行增量的备份,使用方法是:

svnadmin dump project1 --revision 15 --incremental > dumpfile2

上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。

为了记录每次提交的结果,我们需要使用一项Subversion的特性--钩子(hook),看看我们的project1目录:

├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks

其中的hooks目录里存放的就是钩子脚本,我们在此处只使用post-commit钩子,这个钩子会在每次提交之后执行,为了实现我们的备份功能,我们在hooks下建立一个文件post-commit.bat,内容如下:

echo off
set SVN_HOME="C:\Program Files\Subversion"
set SVN_ROOT=D:\svnroot
set UNIX_SVN_ROOT=D:/svnroot
set DELTA_BACKUP_SVN_ROOT=D:\svnrootbak\delta
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do if D:/svnroot/%%~nI == %1 %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2
goto end
:end

通过这个脚本,可以实现D:\svnroot下的版本库提交时自动增量备份到D:\svnrootbak\delta(确定这个目录存在),其中使用的deltaBackup.bat其实可以放在任何地方,只是对脚本的svnadmin dump的包装,内容如下:

@echo 正在备份版本库%2......
%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 --incremental --revision %2 >> %DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本库%2成功备份到了%3!

以上两个脚本可以直接拷贝到project2的hooks目录下,不需要修改就可以实现project2的自动备份。

以上的操作已经OK了,现在需要做的是将完全备份和增量备份结合起来,也就是在完全备份后清理增量备份的结果,使之只保存完全备份后的结果。

当果真出现版本库的故障,就要求我们实现版本库的恢复操作了,这是用要使用svnadmin load命令,同时也需要上次的完全备份例如要把上次完全备份backuprepo,和之后的增量备份dumpfile:

svnadmin load backuprepo < dumpfile

最后的结果,可以下载svnroot.rar,将之解压缩到d:\下,然后修改几个bat文件的SVN_HOME就可以使用了。

3, 版本库同步

Subversion 1.4增加了同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。

3.1. 对目标库初始化

svnsync init svn://localhost/project2 svn://localhost/project1
其中project2是目标的版本库,而project1是源版本库。其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的版本 库的hooks目录里添加一个文件pre-revprop-change.bat,内容为空即可。

3.2. 同步project2到project1

svnsync sync svn://localhost/project2
这时候你update一下你的project2的一个工作拷贝,就会发现有了project1的所有内容。如果project1又有提交,这时候 project2的版本库无法看到最新的变化,还需要再运行一遍sync操作,这样才能将最新的变化同步。需要注意的是,目标版本库只能做成只读的,如果 目标版本库发生了变更,则无法继续同步了。

3.3. 同步历史属性的修改

因为同步不会更新对历史属性的修改,所以svnsync还有子命令copy-revprops,可以同步某个版本的属性。

3.4. 钩子自动同步

希望在每次提交时同步,则需要在源版本库增加post-commit脚本,内容如下:

echo off
set SVN_HOME="D:\Subversion"
%SVN_HOME%\bin\svnsync sync --non-interactive svn://localhost/project2

把以上内容存放为post-commit.bat,然后放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步。

Tags: svn, windows, subversion, svnservice

盗版WINDOWS要被大动作处理了

昨天,新闻里最多的应该就是盗版XP会在20日后正式每分钟黑屏一次(哦,是桌面背景),猜想应该是vista的销售量大不如往,微软不得不作此动作啊。因为这次的动作中,vista等新版操作系统都不在所包括的范围内。

可惜这样的事情在国内变成了什么?在QQ上看到了什么?

QQ留言
  1. 有电脑的注意了啊: !!! 最近大家在使用电脑的时候系统是不是会提示你所使用的微软产品是盗版软件等等,而且还会在右下角出现蓝色的小星星~~这是因为: 由于美国最近要针对中国上诉WTO知识产权保护问题,微软正在为美国政府搜集相关证据,在最近自动更新中包含检测盗版副本程序,为了咱中国利益,请大家不要开启自动更新。如果起诉成功,中国将要赔款几百亿.已经开启当提示要你安装“正版增值计划”请别安装!安装后会在任务栏右下角出现一个蓝色五角星符号!!!这样就会被微软追踪锁定,以向美国政府提供证据!!! 请大家转到其他群上顺带一个,大家转发,这个直接影响所有中国电脑用户的利益 提醒大家,以后去麦当劳,肯德基吃饭一定要记得要发票。麦当劳,肯德基每年在中国因为我们不习惯要发票的原因而掠走将近20亿的税收,把这条信息完好(不加任何修改复制)发至其他人。   
用盗版还有理了,真的是没有想到。就是番茄花园被抓的时候,很多人在力挺番茄花园。记得微软十几年前就说过,盗版你想用就用,不过总有一天,你们是会付出代价的。

现在,就是付出代价的时候了。

XP如果不使用 ,对我来说,确实也没有什么大问题,尝试了一下UBUNTU,基本使用也没有什么问题,上面也有openoffice。那就证明文字处理也没有啥了。编辑器大多是免费的,还有一个非常强大的VIM(虽然我还是不会用),开发工具有zend studio for eclipse,QQ也有,PIDIGN也有邮件有mozilla的,游览器也是,还有什么是没有的呢?当然对于国内的人来说,最大的就是支付了吧。虽然阿里软件支持FIREFOX,但那只是支持windows下的,现在只有希望他们能够支持LINUX等就好了。

尝试转移吧,如果你不愿意转移,那就购买品牌机,里面都有正版系统的。不废话不感慨了。。。

Tags: windows, 微软, xp, vista, 黑屏

Records:14123