使用GIT-TF导入 - 项目已经有待更改

时间:2014-09-08 19:45:11

标签: git tfs git-tf tfvc

我有两个TFS实例,一个是2012年,另一个是2013年。我的目标是从2012年实例导出一些源代码并将其导入2013实例,保留签入历史记录。

我使用的方法是;

  1. http://msysgit.github.io
  2. 安装Windows的GIT
  3. http://gittf.codeplex.com
  4. 安装git-tf
  5. 为我的git存储库c:\ git
  6. 创建一个本地文件夹
  7. 在该文件夹中打开GIT Bash提示符(因此它是最新的)
  8. $ git tf clone http://old-tfs-host:8080/DefaultCollection $/myProject/myBranch --deep
  9. 删除tf文件夹和git-tf文件
  10. 复制我的USERMAP文件
  11. $ git tf configure --deep --keep-author --force http://new-tfs-host:8080/DefaultCollection $/myProject/myBranch
  12. $ git tf pull
  13. $ git commit -a -m "Initial import from TFS 2012"
  14. $ git tf checkin --deep
  15. 处理完约57%

    后出错
      

    git-tf:由于以下错误导致无法更改TFS。   请修复错误并重试签入。项目$ / path-to-file   已经有待更改。

    问题 - 如何解决文件的挂起更改?在我办理登机手续时,没有其他人在存储库中,所以导出可能会被破坏?

    我已经将这个方法用于其他两个分支并且已经成功。


    编辑我发现问题是文件已重命名,唯一的区别是大小写。所以我也有同样的改变

    1. delete $/source-file
    2. edit $/project-file
    3. add $/Source-File
    4. 显然我正在重命名它们,但第1行中删除的文件与第3行中的文件相同,唯一的区别是文件名大小写。

      所以我尝试了$ git config --global core.ignorecase false,但这并未解决在同一更改中删除和添加同一文件的问题。

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,当你在一个变更集中删除,添加和编辑同一个文件时会出现这个问题。

如果你git tf checkin --preview,你会看到详细信息。

我解决了这个问题:

git tf checkin --deep --renamemode=none

答案 1 :(得分:1)

运行git tf checkin时我们有一个similar issue with Git-TF,修补renamemode无法正常工作:

  由于以下错误,

未能将更改挂起到TFS。请修复错误并重试检入

该决议涉及绕过pendChanges()签入PendDifferenceTask.java--force。{/ p>

PendDifferenceTask.java - pendChanges()

if (count < deleteSpecs.length)
{
    log.debug("Failed to pend Delete changes...ignoring count mismatch. Expected: " + deleteSpecs.length + ", Actual: " + count);
    //throw new Exception(Messages.getString("PendDifferencesTask.PendFailed")); //$NON-NLS-1$
}

此更改需要通过mavenmvn package -DskipTests)进行重建,以便快速创建JAR快照。

BTW ..如果您想在Git-TF中启用调试,请将git-tf.cmd更新为以下内容,这有很大帮助:

git-tf.cmd - 启用日志记录

  

java -ea -Xmx512M -Dlog4j.configuration = file:/// C:\ git-tf \ log4j.xml -cp%GITTF_CLASSPATH%“ - Dcom.microsoft.tfs.jni.native.base-directory =% BASE_DIRECTORY%native“com.microsoft.gittf.client.clc.Main%*

然后只需创建一个如下所示的log4j.xml

log4j.xml - 记录配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %t %c{1}:%L - %m%n"/>
        </layout>
    </appender>
     <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="mycorp.myapp.log"/>
        <param name="MaxFileSize" value="100000KB"/>
    <!-- Keep one backup file -->
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>
    <root>
        <level value="debug"/>
        <!--<appender-ref ref="stdout"/>-->
        <appender-ref ref="FILE"/>
    </root>
</log4j:configuration>

如果您想以图形方式查看Windows上的TF更改集,我建议安装Atlassian sourcetree - 它使问题排查比git log更容易。

Sourcetree - Git Branch Visualizer

enter image description here