我正在使用一个本地工作区在我的机器上开发代码,以从 TFS 获取和签入代码。我还在构建一个使用我的机器并需要获取最新代码的自动化 CI 应用程序。我使用以下内容获取 CI 应用程序的最新信息:
tf get $/abc/abc /recursive /all
我想使用不同的本地工作区(CI 工作区)来获取最新信息以避免与开发代码冲突。但是使用 tf,我无法在使用 get 命令时指定工作区,而且MSDN 文档也没有显示这样做。如何使用“tf get”来指定我想要使用的工作空间?
我正在使用一个本地工作区在我的机器上开发代码,以从 TFS 获取和签入代码。我还在构建一个使用我的机器并需要获取最新代码的自动化 CI 应用程序。我使用以下内容获取 CI 应用程序的最新信息:
tf get $/abc/abc /recursive /all
我想使用不同的本地工作区(CI 工作区)来获取最新信息以避免与开发代码冲突。但是使用 tf,我无法在使用 get 命令时指定工作区,而且MSDN 文档也没有显示这样做。如何使用“tf get”来指定我想要使用的工作空间?
在 之前tf get
,将目录更改为 CI 工作区中映射的目录之一。tf get 将使服务器和工作区基于映射驱动器的详细信息。
我还创建了一个自动构建过程,并在此过程中执行“干净”获取,即重命名当前本地工作文件夹,然后在执行完整构建和单元测试之前将文件从 tfs 重新获取到工作文件夹的干净副本. 我在单独的文件夹中使用 Nant 脚本,因此不能只更改目录(更改 Nant 中的当前目录不适用于此问题)。我的解决方案是创建并运行一个批处理文件。下面的示例 Nant 脚本:
<!--do a clean get to the solution folder-->
<target name="clean_get">
<!--Create the batch file-->
<property name ="batch.file" value="clean_get.bat" />
<echo file="${batch.file}" append="True">md ${workfolder.path}</echo>
<echo file="${batch.file}" append="True">${environment::newline()}cd ${workfolder.path}</echo>
<echo file="${batch.file}" append="True">${environment::newline()}tf get $/${project.name} /recursive</echo>
<!--Run the batch file-->
<exec program="clean_get.bat" >
</exec>
<!--Delete the batch file - we're done with it-->
<delete file="${batch.file}" failonerror="false" />