public string[] CheckoutConflictedFiles(ConflictData unmergedData)
{
Directory.SetCurrentDirectory(_workingDir);
var filename = unmergedData.Filename;
string[] fileNames =
{
filename + ".BASE",
filename + ".LOCAL",
filename + ".REMOTE"
};
var unmerged = new[] { unmergedData.Base.Filename, unmergedData.Local.Filename, unmergedData.Remote.Filename };
for (int i = 0; i < unmerged.Length; i++)
{
if (unmerged[i] == null)
continue;
var tempFile =
RunGitCmd("checkout-index --temp --stage=" + (i + 1) + " -- \"" + filename + "\"");
tempFile = tempFile.Split('\t')[0];
tempFile = Path.Combine(_workingDir, tempFile);
var newFileName = Path.Combine(_workingDir, fileNames[i]);
try
{
fileNames[i] = newFileName;
var index = 1;
while (File.Exists(fileNames[i]) && index < 50)
{
fileNames[i] = newFileName + index;
index++;
}
File.Move(tempFile, fileNames[i]);
}
catch (Exception ex)
{
Trace.WriteLine(ex);
}
}
if (!File.Exists(fileNames[0])) fileNames[0] = null;
if (!File.Exists(fileNames[1])) fileNames[1] = null;
if (!File.Exists(fileNames[2])) fileNames[2] = null;
return fileNames;
}