繁体   English   中英

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

[英]Import using GIT-TF - item already has pending changes

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

我使用的方法是;

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

处理约57%后出现错误

git-tf:由于以下错误,未能将更改挂到TFS。 请更正错误,然后重试签入。项目$ /到文件的路径已具有挂起的更改。

问题 -如何解决文件的未决更改? 在执行此签入操作时,存储库中没有其他人,因此出口似乎已损坏?

我已经在其他两个分支中使用了相同的方法,并且已经成功。


编辑我发现问题是文件被重命名,唯一的区别是大小写。 所以在相同的变化中

  1. delete $/source-file
  2. edit $/project-file
  3. add $/Source-File

显然,我正在重命名它们,但是第1行中删除的文件与第3行中的文件相同,唯一的区别是文件名大小写。

所以我试过$ git config --global core.ignorecase false但这不能解决在同一更改中删除和添加相同文件的问题。

我遇到了同样的问题,当您在一个变更集中删除,添加和编辑同一文件时,就会发生该问题。

如果您执行git tf checkin --preview ,则将看到详细信息。

我通过以下方法解决了它:

git tf checkin --deep --renamemode=none

当运行git tf checkin ,我们在Git-TF上也遇到了类似的问题 ,修补使用renamemode无效:

由于以下错误,未能对TFS进行更改。 请更正错误,然后重试签入

该决议涉及绕过pendChanges()在检查PendDifferenceTask.java基本上--force进去。

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快照。

顺便说一句..如果要在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分支可视化工具

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM