代码之家  ›  专栏  ›  技术社区  ›  Brandon

Git到Tfs源代码管理迁移

  •  15
  • Brandon  · 技术社区  · 15 年前

    我想看看TFS如何为我的命令工作。所以我想将当前的Git存储库移动到TFS数据库。我们已经使用了Git作为它的主流分支支持,所以我想使用TFS2010来解决这个问题。

    现在问题是。如何将我们的git repo导出到tfs。很明显这是某种剧本。有人做过吗?有什么建议吗?

    谢谢您。

    5 回复  |  直到 8 年前
        1
  •  10
  •   Community noseratio    7 年前

    微软现在已经发布了他们自己的git<-->git的tfs扩展: GIT-TF

    这允许从tfs中提取新的git存储库,或配置为允许git执行tfs push,这是您要做的:

    (来自文档)

    对于使用现有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)

        2
  •  5
  •   E-rich Richard Schneider    13 年前

    我创建了一个快速批处理文件,但是您需要在您的路径中使用Team Foundation POWER工具(TFTP.exe)和(命令行循环命令)

    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. 然后创建一个Team Foundation工作空间…(务必更换 {TtsInstance} 使用您的TFS URI。
    3. 然后在工作区中创建一个临时文件夹。
    4. 然后它在提交文件的每一行中循环,从git中执行签出,使用tfpt签入当前文件(再次确保替换 {AuthorName} 注释将包括来自git的时间戳(不幸的是,如果不更改tfs服务器的时间,就不能更改签入时间,我建议不要更改时间戳)和原始作者的名称。

    这行得通,但分支机构不会被管理。我没有花时间去想分支,因为这对当时的工作来说并不是一个足够大的因素。

    希望这能节省一些时间!

        3
  •  2
  •   Larry Dukek    14 年前

    建立一个 SVNBridge 到tfs,然后使用git svn clone。

        4
  •  0
  •   brianegge    15 年前

    您可以将git导出到svn,并使用 CS Converter 从SVN到TFV。注-cs转换器已经停止使用,但看起来您仍然可以下载它。

        5
  •  -1
  •   Rob    8 年前

    这是一个古老的问题,也许没人再找这个了,但现在更容易了。

    1. 在TFS中创建一个以Git作为源代码控件的团队项目

    2. 获取项目的Git URL。它看起来像… https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    3. 像这样放入命令并执行。

      git远程添加源站 https://yourprojects.VisualStudio.com/defaultcollection//u git/projectname

      git push-u来源--全部

    应该是你所需要的。