在跨地域进行项目开发时,使用TFS Proxy可以说是一个不错的选择。TFS Proxy的作用就是为远程访问TFS提供一个代理,缓存,提高远程访问的效率,通过在远程位置为开发人员缓存版本控制文件来帮助节省带宽。
首先必须在远程站点安装和配置代理服务器。 运行 Team Foundation Server Proxy 配置向导之后,必须将代理服务器连接到 Visual Studio Team Foundation Server 的部署。将代理服务器连接到 Team Foundation Server 之后,必须配置团队资源管理器的版本控制功能以使用代理服务器。 可以将代理服务器配置为缓存所有项目的文件,或仅缓存指定团队项目集合的文件。 必须在主站点将代理服务器的服务帐户添加到 Team Foundation Server,然后才能开始在远程站点缓存文件。
配置实例:
Team Foundation Server 部署位于IP: *.*.*.109
Team Foundation Server Proxy 部署位于IP:*.*.*.121
1.安装和配置代理服务器。
2.使用 Team Foundation Server 配置工具配置 Team Foundation Server Proxy。
1.单击“开始”,指向“所有程序”,指向“Microsoft Team Foundation Server 2010”,然后单击“Team Foundation 管理控制台”。
此时将出现 Team Foundation 管理控制台。
2.单击“代理服务器”,然后单击“配置已安装的功能”。
此时将出现 Team Foundation Server 配置工具。
按照页面提示信息一步步完成配置即可
3.将代理连接到Team Foundation Server。如下:
<?xml version="1.0" encoding="utf-8"?>
<ProxyConfiguration
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Servers>
<Server>
<Uri>http://*.*.*.109:8080/tfs/</Uri>
</Server>
</Servers>
<!-- Proxy file cache root folder -->
<CacheRoot>D:\TEMP\Proxy\</CacheRoot>
<CacheLimitPolicy>
<!-- Cache limit expressed as percentage of disk space -->
<PercentageBasedPolicy>75</PercentageBasedPolicy>
<!-- Cache limit expressed as MB -->
<!-- <FixedSizeBasedPolicy></FixedSizeBasedPolicy> -->
</CacheLimitPolicy>
<!-- Percentage of cache size that needs to be freed up, on hitting cache limit -->
<CacheDeletionPercent>10</CacheDeletionPercent>
<!-- Indicates how often (number of hours) the proxy statistics information should be persisted to a file-->
<StatisticsPersistTime>1</StatisticsPersistTime>
</ProxyConfiguration>
配置完成后,重启IIS,通过web页面访问http://localhost:8081/VersionControlProxy/v1.0/ProxyStatistics.asmx
3 配置团队资源管理器以使用 Team Foundation Server Proxy
- 打开Microsoft Visual Studio 2010,然后单击“Microsoft Visual Studio 2010”。
- 在“工具”菜单上,单击“选项”。
- 展开“源代码管理”,然后单击“Visual Studio Team Foundation Server”。
- 选中“使用代理服务器进行文件下载”复选框。
- 在“代理服务器名称”框中,键入承载 Team Foundation Server Proxy 的计算机的名称。
- 在“端口”框中,键入 Team Foundation Server Proxy 的端口号并单击“确定”。
Team Foundation Server Proxy 通常在端口 8081 上侦听客户端请求。
到这里基本就已经完成了Proxy的配置与连接了,在上一步配置的cache root folder 这个目录下会有缓存的文件,如果此目录为空,则Proxy没有发挥作用。
好啦,到这里我们的Proxy配置就完成了,接下来就需要验证下我们配置的对不对了。
在获取完源代码后发现cache root folder 这个目录为空,同时访问http://localhost:8081/VersionControlProxy/v1.0/ProxyStatistics.asmx ,点击Invoke,如果页面显示
<?xml version="1.0" encoding="utf-8" ?>
<
ArrayOfProxyStatisticsInfo
xmlns:xsi
="
http://www.w3.org/2001/XMLSchema-instance
"
xmlns:xsd
="
http://www.w3.org/2001/XMLSchema
"
xmlns
="
http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Statistics/03
"/>
经查阅资料发现是由于Proxy管理员账号配置不对,因为我安装proxy时使用的是我们本地运行TFS的域帐户,他肯定没有权限访问那个外网的TFS。这里就要使用远端TFS的运行帐户运行Proxy,来作为Proxy的Server Account,并且此帐户要加入到本地安装Proxy主机的Administrators组(注意密码也需一致),添加完后再访问,在 Team Foundation Server 配置工具中修改下Proxy的管理账号,重启IIS,此时再去获取源代码后,cache root folder 这个目录就已经有了缓存文件,再访问http://localhost:8081/VersionControlProxy/v1.0/ProxyStatistics.asmx/QueryProxyStatistics 页面显示:
<?xml version="1.0" encoding="utf-8" ?>
-
<
ArrayOfProxyStatisticsInfo
xmlns:xsi
="
http://www.w3.org/2001/XMLSchema-instance
"
xmlns:xsd
="
http://www.w3.org/2001/XMLSchema
"
xmlns
="
http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/Statistics/03
">
<
ProxyStatisticsInfo
CurrentCacheSize
="
286720
"
NoOfRequests
="
36
"
OverallCacheHits
="
0
"
NoOfFilesInCache
="
36
"
OverallCacheMisses
="
36
"
CacheHitsPercentage
="
0
"
CacheMissPercentage
="
100
"
ServerId
="
a0eeebec-1851-4c60-8852-391af066568b
"
ServerUrl
=
http://*.*.*.109:8080/tfs/DefaultCollection/
ScanComplete
="
true
" />
</
ArrayOfProxyStatisticsInfo
>
附Team Foundation Server Proxy 配置文件说明:
此节点包含一个或多个 <Server> 节点,这些节点对应于 Visual Studio Team Foundation Server 的一个或多个实例或代理服务器缓存其中文件的团队项目集合。
每个 <Server> 节点都包含一个 <Uri> 节点,该节点指定运行 Team Foundation Server 的计算机或 Team Foundation Server 上的一个团队项目集合。
如果指定运行 Team Foundation Server 的计算机,则代理可以缓存该服务器上所有集合中的文件。
如果指定一个团队项目集合,则代理只能缓存该集合中的文件。
例如:
1 如果代理对名为 TfsServer 并使用端口和虚拟目录默认值的服务器上每个集合中的版本控制文件进行缓存,则 Servers 节点可能与下面的示例类似:
<Servers>
<Server>
<Uri>http://tfsserver:8080/Tfs</Uri>
</Server>
</Servers>
2 如果代理对名为 TfsServer 并使用端口和虚拟目录默认值的服务器上 collection0 中的版本控制文件进行缓存,则 Servers 节点可能与下面的示例类似:
<Servers>
<Server>
<Uri>http://tfsserver:8080/Tfs/Collection0</Uri>
</Server>
</Servers>
3 如果代理对名为 TfsServer1 的服务器上 collection0 中的版本控制文件进行缓存,并对名为 TfsServer2的服务器上每个集合中的版本控制文件进行缓存,同时这两台服务器都使用端口和虚拟目录默认值,则 Servers节点可能与下面的示例类似:
<Servers>
<Server>
<Uri>http://tfsserver1:8080/Tfs/Collection0</Uri>
</Server>
<Server>
<Uri>http://tfsserver2:8080/Tfs/ </Uri>
</Server>
</Servers>
此节点包含文件缓存的根目录。
对于配置了代理的每个应用层,此目录都包含一个对应文件夹。
例如,CacheRoot 节点可能与下面的示例类似,同时在 Servers 节点中包含单个项:
<CacheRoot>C:\Program Files\Microsoft Team Foundation Server 2010\Version Control Proxy\_tfs_data</CacheRoot>
此节点指定代理将在哪个点运行清理例程以移除陈旧文件。 可通过下面两种方法之一来配置此节点:
1.当已填充指定百分比的可用磁盘空间时,可使用 <PercentageBasedPolicy> 节点运行清理例程。 例如:如果代理设置为在缓存填充了总磁盘空间的 75% 时运行清理例程,则 CacheLimitPolicy 节点可能与下面的示例类似:
<CacheLimitPolicy>
<!-- Cache limit expressed as percentage of disk space -->
<PercentageBasedPolicy>75</PercentageBasedPolicy> </CacheLimitPolicy>
2 当已填充指定的磁盘空间量时(以 MB 为单位),可使用 <FixedSizeBasedPolicy> 节点运行清理例程。例如,如果代理设置为在缓存填充了 500 MB 时运行清理例程,则 CacheLimitPolicy 可能与下面的示例类似:
<CacheLimitPolicy>
<!-- Cache limit expressed as MB -->
<FixedSizeBasedPolicy>500</FixedSizeBasedPolicy></CacheLimitPolicy>
此节点指示应向磁盘写入缓存性能统计信息的频率(以小时为单位)。 例如,如果代理设置为每小时向磁盘写入一次统计信息,则 StatisticsPersistTime 节点可能与下面的示例类似:
<StatisticsPersistTime>1</StatisticsPersistTime>
原文地址:http://blog.sina.com.cn/s/blog_4a1015810100vygf.html