[英]Import using GIT-TF - item already has pending changes
我有两个TFS实例,一个是2012,另一个是2013。我的目标是从2012实例中导出一些源代码,然后将其导入2013实例中,以保留历史记录。
我使用的方法是;
$ git tf clone http://old-tfs-host:8080/DefaultCollection $/myProject/myBranch --deep
$ git tf configure --deep --keep-author --force http://new-tfs-host:8080/DefaultCollection $/myProject/myBranch
$ git tf pull
$ git commit -a -m "Initial import from TFS 2012"
$ git tf checkin --deep
处理约57%后出现错误
git-tf:由于以下错误,未能将更改挂到TFS。 请更正错误,然后重试签入。项目$ /到文件的路径已具有挂起的更改。
问题 -如何解决文件的未决更改? 在执行此签入操作时,存储库中没有其他人,因此出口似乎已损坏?
我已经在其他两个分支中使用了相同的方法,并且已经成功。
编辑我发现问题是文件被重命名,唯一的区别是大小写。 所以在相同的变化中
delete $/source-file
edit $/project-file
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
进去。
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$
}
此更改将需要通过maven ( mvn package -DskipTests
)进行重建,以快速创建JAR快照。
顺便说一句..如果要在Git-TF中启用调试,请将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
:
<?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
容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.