我认为这一点:
tf.exe get $/project /recursive
......需要这个奇怪的工作区映射,称为TFS服务器和这样。
有没有什么办法,我可以做到这一点最简单的事情:去连接到使用这组凭据此 TFS服务器,获得最新的源代码, 这个项目,并把它放在这里 ? 所有的命令行。
我认为这一点:
tf.exe get $/project /recursive
......需要这个奇怪的工作区映射,称为TFS服务器和这样。
有没有什么办法,我可以做到这一点最简单的事情:去连接到使用这组凭据此 TFS服务器,获得最新的源代码, 这个项目,并把它放在这里 ? 所有的命令行。
首先,你想进行源控制下不再受控文件的副本(如SVN出口),或者是你仍然希望与文件和TFS工作?
如果您只是想在最新的文件,并没有“结合”到TFS,你将不得不自己做一点工作的副本。 撇开凭证( [/login:username,[password]]
参数提供给许多命令行方法)。
TF
命令获取文件列表: tf dir "$/YourSolution" /Recursive > files.txt
files.txt
一些巧妙批处理文件(或使用脚本语言): $/
这是目录,在您的目的地创建目录(先删除三个字符和最后一个字符,一个冒号)。 %file%
和目录%dir%
然后发出以下命令(在该目录中的每个文件): tf view "$/%DIR%/%FILE%" "/output:Your-Target-Path/%DIR%/%FILE%"
或者,如果你满意的当前目录作为目标:
tf view "$/%DIR%/%FILE%" "/output:%DIR%/%FILE%"
请注意,您所需要的%DIR%/%FILE%
输出部分或全部文件都将在相同的目录倾倒。
注意:这很可能是一个非常高的带宽和运算速度慢!
tf workspace /new /collection:<URL_TO_SERVER> /permission:Private
(注意,这会提示,有一个无提示选项,但确定工作区的名称被留作练习) LOCALDIR
tf workfold /map "$/SERVER_DIR" "LOCALDIR"
LOCALDIR
tf get . /Recursive
tf get . /Recursive
在这一点上,你现在应该有所有的文件,如果你想你也有TFS的绑定,所以你可以提交更改。 或者,你现在可以在内容复制到其他地方,并打破映射/工作区。 使用正确的命令行变种tf workfold /unmap
和tf workspace /delete
将取消映射你的workfolder和删除工作区。
从TFS干净导出任何文件夹? 终于找到了一个辉煌的解决方案,我想。
我不打算现在已经完全研究这个给你,但以后打算用它来取代我的令人难以置信的凌乱的构建服务器工作区同步脚本,当我得到的时间。
解:
使用微软的Git的-TF获得源磁盘,而不必设立一个工作区或任何东西。 我尝试了命令,它表现的很出色。 认为这将在2010年和2012年的工作TFS从我能理解,不会有留下以后会导致问题的绑定或工作区或任何东西。 我认为,所有你需要安装是GIT和GIT-TF。
http://www.microsoft.com/en-us/download/details.aspx?id=30474
事实上,你会得到的文件到一个Git仓库,这是没有问题的。 你会得到一个名为git的导出的文件夹中(隐藏?)文件夹,我想你可以直接删除它摆脱GIT的任何痕迹。
如果有人实现了这个,应该是很容易的,请确认它按预期工作。
快速解决方案
在雷海耶斯选项2回答的基础上,我放在一起的实际脚本,应该是直截了当地使用那些谁只是想快速和肮脏的解决方案。 你应该阅读他的aswer获取更多信息。
要使用它:
。
SET COLLECTION_URL="http://localhost:8080/tfs/<collection>"
SET SERVER_DIR="$/<REMOTE_SOLUTION_DIR>"
SET LOCAL_DIR="X:\<YourLocalDir>"
SET TF_DIR="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE"
%TF_DIR%\tf workspace /new /collection:%COLLECTION_URL% /permission:Private /noprompt tmp_batchws
%TF_DIR%\tf workfold /map %SERVER_DIR% %LOCAL_DIR%
cd /d %LOCAL_DIR%
%TF_DIR%\tf get . /Recursive
%TF_DIR%\tf workspace /delete tmp_batchws /noprompt
还有,当涉及到TFS命令行没有“简单”的选项 - 他们几乎总是涉及到非常多的类型(如不能够简单地有一个默认的设置,使您不必指定每个集合的URL命令)
通常的方法,使TFS命令行“简单”是写批处理文件来隐藏掉所有已经被每一次指定的信息(服务器URL和递归标志等)
TF.exe确实允许你做几乎任何事情,虽然如此,它的TF相当直接的调用序列创建一个临时映射,做一个获取和和再次删除映射。
http://johannblais.blogspot.com/2014/07/tfs-equivalent-of-svn-export.html
HTTP:// TFS-服务器:端口/ TFS /收集/ TeamProject /团队/ _api / _versioncontrol / itemContentZipped repositoryId =&路径=网址编码源控制路径
我写的PowerShell中的领先答案
$base = "f:\whereyouwantthefilestogo\"
foreach($l in get-content D:\outputfromTFdir.txt)
{
if($l -match '^\$.*\:$')
{
$repopath = $l.trim(':')
write-host 'base path'
$basepath = "$base$($l.Substring(2,$l.Length -3) -replace '/','\')"
if((Test-Path $basepath) -eq $false)
{
write-host 'making directory'
New-Item -ItemType directory -Path $basepath
}
continue;
}
elseif($l -match '^\$')
{
write-host 'sub folder'
$subfolderpath = "$basepath\$($l.trim('$'))"
if((Test-Path $subfolderpath) -eq $false)
{
write-host 'making directory'
New-Item -ItemType directory -Path $subfolderpath
}
continue;
}
elseif($l -match '.*\..*')
{
write-host 'get file'
$filename = "$basepath\$l"
write-host $filename
$repofile = "$repopath/$l"
tf view "$repofile" "/output:$filename" /collection:http://tfsserver
}
else{write-host 'blank line'}
}