我应该如何获取大型的TFS代码库样本?

8
我正在开发一个与TFS集成的工具,需要正确解析TFS日志(从tf.exe history命令)并检出不同的修订版本(再次使用tf.exe)。在我测试的TFS服务器上它表现得非常好,但我想在大型存储库的广泛范围内测试它,以确保我的解析正常工作。
我希望使用Codeplex来获取访问TFS存储库的权限,但似乎只有项目成员才能获得对Codeplex项目的TFS访问权限。
是否有任何公共TFS服务器上托管的开源代码集合?是否有其他可用于测试的公共可用服务器?

这个问题适合在http://opendata.stackexchange.com/上讨论。 - Nicolas Raoul
6个回答

2
我建议使用 svn2tfs 工具,并在 SourceForge 上选择任何活跃的项目。在 SF 上有很多选择,这些项目使用 SVN 而不是 CVS。你甚至可能会得到额外的好处,帮助 svn2tfs 项目解决任何问题。

不幸的是,这种方法只能给我提供TFS支持的有限一组更改类型。我的工具已经正确解析了基础知识,但是TFS支持奇怪的更改,如“合并、编辑”和其他组合。由于这些在SVN/CVS中不存在,如果我从另一个存储库导入,它们就不会显示出来。正是因为这些特定于TFS的历史记录条目,我想要访问真正的TFS服务器。 - mcobrien
  1. 为什么合并/编辑会出现奇怪的问题?
  2. 你可以通过从主干分支出来,将分支更新到下一个版本,并将其合并回主干来模拟合并。
- Mrchief

1

既然您提到了tf history命令,我认为您想要收集/解析项目(及其文件)的提交历史记录日志。

所以除了大型存储库外,您还需要大量的历史记录,对吗?如果是的话,那么这就是您面临的问题:

  • Codeplex上的大多数项目使用Mercurial而不是TFS。因此,即使您获得了访问权限,也无法使用TFS。
  • 正如您所提到的,他们要求您成为成员才能访问源代码。
  • 即使您获得了访问权限或找到了公共服务器(不太可能),您仍然需要大量的历史记录。

如果我的假设正确,那么这是最简单的(虽然有点繁琐)方法:

  • 进入任何大型项目,例如NugetWix的修订记录
  • 下载任何旧版本(可以回溯到您想要历史记录的时间)。您可以下载未成为会员的压缩源文件。
  • 在测试服务器上,检入代码(src)以创建基线。
  • 下载下一个版本。
  • 在服务器上检出文件,并用更新版本的文件覆盖它们。
  • 在检入时,使用history.txt示例)创建检入注释
  • 重复此过程几次。

哇!现在您拥有了一个具有丰富历史记录的大型存储库!

希望这能帮到您。


非常感谢您提供如此详细的答案,但不幸的是这并不完全符合我的需求。按照这种方法,我将得到一个仅包含 TFS 支持的一小部分操作的存储库。我的测试服务器已经具备了基本的添加、更新和删除更改功能,但 TFS 还支持更多奇特的更改类型,例如“合并、编辑”和其他组合。(实际上,更改类型是一个位掩码,因此理论上几乎可以使用任何组合,尽管有些组合很难理解其含义。) - mcobrien
  1. 为什么合并/编辑会出现奇怪的问题?
  2. 您可以通过从主干分支出来,使用下一个版本更新分支,并将其合并回主干来模拟合并。
- Mrchief
合并/编辑本身并不奇怪,只是如果我从另一个SCM(或者像你在回答中建议的一系列变化文件)导入,它不会出现在我的TFS日志中。我正在编写一个工具,将TFS日志转换为内部格式,因此我需要使用使用所有TFS功能的日志进行测试。 - mcobrien

0

你尝试过在Codeplex上一些更大的项目吗?

如果您只需要读取权限,那么您应该可以尝试使用各种存储库进行操作。

不幸的是,除非您是项目成员,否则似乎无法访问Codeplex上的项目。我无法使其工作,讨论此问题的人也无法在http://codeplex.codeplex.com/Wikipage?title=Source%20Control%20Clients上解决。 - mcobrien
为什么不联系几个项目的所有者请求访问权限呢?我的项目很小,但我认为我可以在短时间内授权访问权限... - jessehouwing

0

我没有太多的tfs经验,但我认为有迁移工具可以让你摄取其他产品(如svn或hit)的代码库。

如果确实如此,您可能希望找到一个大小适中的foss项目的svn/git资料库,并尝试导入它。


0
"我本来希望通过Codeplex访问TFS存储库,但似乎只有项目成员才能获得对Codeplex项目的TFS访问权限。"
"

这个解决方案似乎是SO用户的普遍共识。我已经阅读了一些Codeplex TFS连接问题线程(您在下面提供了链接),并希望本主题中的评论可以解决该问题:

"
"

作为协调员或开发人员连接到Codeplex TFS

"

很不幸,我仔细查看了一下,并且这个页面http://codeplex.codeplex.com/Wikipage?title=Source%20Control%20Clients确认您需要成为项目成员。 “如果您不是项目的开发人员,则需要使用Subversion客户端匿名访问源代码控制存储库”是关键短语。 - mcobrien

0

我想知道您是否可以使用git-tfs项目将现有的Git项目导入TFS。

  1. 下载并安装git-tfs
  2. 创建一个新的TFS项目
  3. 使用git-tfs将TFS项目克隆到Git项目中(“git tfs clone http://tfs:8080/tfs/DefaultCollection $/some_project”)
  4. 将您选择的现有Git项目导入到全新的Git项目中(我不知道命令,但我认为这是可能的)。
  5. 使用git-tfs检入到TFS服务器(“git tfs checkintool”)

=> 这样做有意义吗?而且有效吗?

更多信息请参考: http://lostechies.com/jimmybogard/2011/09/20/git-workflows-with-git-tfs/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接