2

1 つは 2012 で、もう 1 つは 2013 の TFS の 2 つのインスタンスがあります。私の目標は、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 への変更を保留できませんでした。エラーを修正して、チェックインを再試行してください。項目 $/path-to-file には、保留中の変更が既に含まれています。

質問- ファイルの保留中の変更を解決するにはどうすればよいですか? このチェックインを行っている間、リポジトリには誰もいないので、エクスポートが破損しているように見えますか?

他の 2 つのブランチでも同じ方法を使用しましたが、成功しています。


編集問題は、ファイルの名前が変更され、大文字と小文字が異なるだけであることがわかりました。だから私が持っているのと同じ変更で

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

明らかに名前を変更していますが、1行目で削除されたファイルは3行目のファイルと同じですが、ファイル名の大文字と小文字が異なるだけです。

そのため、試してみ$ git config --global core.ignorecase falseましたが、同じ変更で同じファイルを削除および追加するという問題は解決しません。

4

2 に答える 2

1

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$
}

この変更では、JAR スナップショットをすばやく作成するために、 maven ( ) を使用して再構築する必要があります。mvn package -DskipTests

ところで..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 ブランチ ビジュアライザー

ここに画像の説明を入力

于 2015-07-24T21:56:47.063 に答える