2009-12-31 304 views
15

我想看看TFS如何为我的命令工作。所以我想将我们当前的GIT存储库移至TFS数据库。我们使用GIT支持分支支持,所以我想用TFS 2010解决这个问题。Git到TFS源代码管理迁移

现在的问题是。我如何将我们的GIT仓库出口到TFS。显然它是某种脚本。有没有人做到这一点?有什么建议么?

谢谢。

+17

为什么地狱会有人从git移动到tfs? – hasen

+14

两个字:更好的工具。我知道git有很多炒作。而Torwalds先生自己写了一批它,但与这件事SUCKS交互。 我已经使用了19个月了,我已经将它介绍给了团队,我不认为它是一颗银弹。所有的UI工具都是蹩脚的。命令行界面很详细。我有一套脚本来支持我的工作流程,但这不是我为之骄傲的解决方案。 加上TFS不仅仅是源代码控制。这是一个复杂的解决方案:bug跟踪器,构建系统,VS集成,SP开发人员无法观察流程并提交错误等。 –

+0

Git扩展https://code.google.com/p/gitextensions/正在迅速制作Artem的评论已过时。比捆绑的UI更好的UI。 –

回答

9

微软已经发布了自己的GIT < - > TFS扩展GIT:GIT-TF

这允许拉从TFS一个新的Git仓库或配置,让GIT到TFS推,这是你想要做什么:

(从文件)

对于一个团队与现有的Git回购工作,使用Git-TF开发者共享 更改TFS将使用以下工作流程。

# Configure the existing repo's relationship with TFS 
git tf configure http://myserver:8080/tfs $/TeamProjectA/Main 

# Fetch the latest changes from TFS and merge those 
# changes with the local changes. 
# Note, merging is important when working in a team configuration. 
# See "Rebase vs. Merge" below. 
git tf pull 

git commit -a -m "merge commit" 

# Check in the merge commit as a single TFS changeset 
git tf checkin 

# Push the merge commit to the origin 
git push 

此外,已有的开源GIT-TFS解决方案都可以使用(从Windows只,微软的解决方案使用Java和跨平台),在回答Git to TFS 2008 one way migration (with history)

+0

该解决方案仅适用于没有分支机构的情况。如果您有分支机构,更好的解决方案是使用TFS2013(Git) – Philippe

0

您可以将git导出到svn,并使用CS Converter从svn转到TFVS。注 - CS Converter已停用,但看起来您仍然可以下载它。

2

设置一个SVNBridge到TFS,然后使用git-svn clone。

+2

这是git svn update,但您是对的。我已经完成了这件事。 –

+0

我没有在[Git文档](http://git-scm.com/docs/git-svn)中看到'git svn update'命令,尽管我找到了'git svn dcommit',其中“将当前分支中的每个diff直接提交到SVN仓库,然后重新设置[s]或重置[s](取决于SVN和head之间是否存在差异)。这将在SVN中创建一个修订版本为每个提交git。“所以如果这应该是一回事? – 2012-08-07 17:11:19

5

我创建了一个快速批处理文件,但是你需要有团队基础电动工具(tfpt.exe)在你的路径和(命令行loop命令)

Visual Studio的命令行到你想要的git的文件夹并运行以下内容。

git log --pretty="'%%H',%%ci - %%s" --reverse > commits 

tf workspace temp /new /s:http://{TfsInstance} /i 
tf workfold /map %2 . /workspace:temp 

FOR /F "tokens=1* delims=','" %%a IN (commits) DO git checkout %%a && tfpt online /recursive /exclude:.git*,commits,*.obj,*.exe,_ReSharper*,obj,debug,*.user,*.suo,Bin /adds /deletes /i && tf checkin /author:"{AuthorName}" /comment:"%%b" /i 

tf workspace temp /delete /i 
  1. 首先,它创建具有以相反的顺序(最早的第一)所有的提交的信息的提交文件。
  2. 然后创建一个团队基础工作空间。(请务必与TFS URI来代替{TtsInstance}
  3. 然后在工作区中会创建一个临时文件夹。
  4. 然后它遍历在提交文件中的每一行,从git结帐,使用TFPT检入当前文件(再次确保使用您的作者姓名替换{AuthorName})注释将包括git的时间戳(很遗憾,如果不更改TFS服务器的时间,则无法更改签入时间我会建议反对的)和原作者的名字

T他的工作还行,但分支机构不会被保存。我没有花时间去分析,因为当时对于这项工作来说这不是一个足够大的因素。

希望这可以节省一些人一些时间!现在

+0

我将'Thumbs.db'添加到** tfpt **排除列表中。我从git历史记录中删除了它,因为它在我包含_.gitignore_文件之前被意外添加,并且在运行'.bat'文件时收到错误。 –

-1

这是描述一个古老的问题,也许没有人在寻找这个东西,但现在变得更加容易了。

  1. 为源代码控制

  2. 抓住Git的网址为项目使用Git创建TFS团队项目。它会看起来像... https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

  3. 放入类似的命令并执行。

    git的远程添加原产https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    混帐推-u起源--all

应该是你所需要的。

+0

并不真正有用,因为在使用TFS托管的GIT时,您不会获得像您一样可以随意使用的全套控件一个完整的TFS管理的项目。 –