Импортировать с помощью 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, но это не решает проблему удаления и добавления одного и того же файла в одно и то же изменение.


person Dennis Allen    schedule 08.09.2014    source источник


Ответы (2)


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

если вы сделаете git tf checkin --preview, вы увидите подробности.

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

git tf checkin --deep --renamemode=none
person Marcus Classon    schedule 17.03.2015

У нас была похожая проблема с 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

введите здесь описание изображения

person SliverNinja - MSFT    schedule 24.07.2015