Импорт с использованием GIT-TF - элемент уже имеет ожидающие изменения

У меня есть два экземпляра TFS, один 2012 и другой 2013. Моя цель - экспортировать некоторый исходный код из экземпляра 2012 и импортировать его в экземпляр 2013, сохранив проверку истории.

Я использую метод;

  1. Установите GIT для Windows с http://msysgit.github.io/
  2. Установите git-tf с http://gittf.codeplex.com/
  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 из-за следующих ошибок. Исправьте ошибки и повторите попытку. Элемент $/path-to-file уже содержит ожидающие изменения.

Вопрос - как мне разрешить ожидающие изменения файла? Пока я делаю эту регистрацию, в хранилище больше никого нет, поэтому может показаться, что экспорт может быть поврежден?

Я использовал этот же метод для двух других веток и был успешным.


РЕДАКТИРОВАТЬ Я обнаружил, что проблема в том, что файл был переименован с единственным отличием. Так в той же смене у меня

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

Очевидно, я переименовываю их, но файл, удаленный в строке 1, совпадает с файлом в строке 3, с той лишь разницей, что это имя файла.

Итак, я попробовал $ git config --global core.ignorecase false но это не решает проблему как удаления, так и добавления одного и того же файла в одно и то же изменение.

2 ответа

У меня была такая же проблема, которая возникает, когда вы удаляете, добавляете и редактируете один и тот же файл в одной ревизии.

если вы делаете git tf checkin --preview вы увидите детали.

Я решил это, выполнив:

git tf checkin --deep --renamemode=none

У нас была похожая проблема с Git-TF при запуске git tf checkinвозиться с 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$
}

Это изменение потребует восстановления через maven(mvn 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>

Если вы хотите графически просматривать наборы изменений TF в Windows - я предлагаю установить Atlassian sourcetree - это значительно облегчило поиск и устранение неисправностей, чем git log,

Sourcetree - Визуализатор Git Branch

Другие вопросы по тегам