我有两个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。 请修复错误并重试签入。项目$ / path-to-file 已经有待更改。
问题 - 如何解决文件的挂起更改?在我办理登机手续时,没有其他人在存储库中,所以导出可能会被破坏?
我已经将这个方法用于其他两个分支并且已经成功。
编辑我发现问题是文件已重命名,唯一的区别是大小写。所以我也有同样的改变
delete $/source-file
edit $/project-file
add $/Source-File
显然我正在重命名它们,但第1行中删除的文件与第3行中的文件相同,唯一的区别是文件名大小写。
所以我尝试了$ git config --global core.ignorecase false
,但这并未解决在同一更改中删除和添加同一文件的问题。
答案 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>
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快照。
BTW ..如果您想在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
更容易。