公司里的TFS的数据库出了一点问题,需将数据库恢复到之前的一个备份。恢复完了CheckIn本地的的更新,工作一切正常。但其它人从TFS上获得最新版本时却报文件的版本不对(比如某个sln文件),在本地workspace中用notepad打开发现,本来应当是一个XML文件,现在却成一个C#代码,而且是另一个team project的文件。随后所有人的机器上都有这个错,我的机子上也是。本以为是强制添加新文件造成数据库中File表中的content与Version表中的fullpath对应关系错误造成的,于是又一次恢复了数据库,本地好似一切正常,但在别人机器上错误又出现了。
一边先让项目给能正常工作,一边向GTSC写信,到下午时终于有了一些进展。TFS为了提高Versioncontrol Web service的性能,将已读出的文件在Web Server上进行了缓存,文件大多用zip进行压缩后放在Data目录中,下次有客户取最新版本就不用从Versioncontrol中读的了,而是从WebServer上直接读的。在TFS1.0里,一个数据库层只有一个应用层,正常情况下也相安无事。但如果直接对数据层进行操作,比如数据库恢复之类,那Web上的缓存与数据库中的就不一样了,所以就出现了文件名与文件内容不一致的情况。
删除Data目录下的所有文件夹后一切正常,可恶的缓存,让我白忙一天。
另有几件事,第一、删除缓存后最一次取最新版本,那个慢啊,本对缓存的一堆不满在慢慢等待中一点、一点、一点点地化解了,没他还真不行!第二、删之前我看一下Data目录,200M多,15000个文件,想能不能对他进行管理,查了一下资料,列在下面,希望对大家有所帮助。第三、如果你用了proxy,那proxy上的缓存也要一并删除。
Versioncontrol Web service中?Web.Config的设置如下:
fileCacheRoot:此设置是一个字符串,它描述作为版本控制服务器文件缓存根目录的目录路径。
CacheLimitPercent:此设置是一个数值,它表示可用于缓存的磁盘空间百分比。
CacheLimit:此设置是一个数值,它表示缓存的大小限制(以 MB 为单位)。
CacheDeletionPercent:此设置是一个数值,它表示达到缓存限制时将清空的缓存百分比。
LastWriteTimeUpdateWindow:此设置指示更新缓存中文件的 LastWriteTime 属性的时间间隔(以小时为单位)。此设置阻止对每个缓存命中请求的 LastWriteTime 更新,而仅在 LastWriteTimeUpdateWindow 中指定的持续时间到期后进行更新。此设置的默认值为 8 小时,设置范围为 1 到 24 小时之间。
StatisticsPersistTime:此元素指示应将统计信息写入磁盘的频率(以小时为单位)。默认值为 1 小时,设置范围为 1 到 24 小时之间。
打印 | 张贴于 2006-11-13 20:19:00 | Tag:VSTS