/**
* Merge three strings in a specified file.
*
* @param string $file
* The file name in the git repository to which the content is written.
* @param string $base
* The common base text.
* @param string $remote
* The first changed text.
* @param string $local
* The second changed text
*
* @return string
* The merged text.
*/
protected function mergeFile($file, $base, $remote, $local)
{
file_put_contents($file, $base);
$this->git->add($file);
$this->git->commit('Add base.');
if (!in_array('original', $this->git->getBranches()->all())) {
$this->git->checkoutNewBranch('original');
} else {
$this->git->checkout('original');
$this->git->rebase('master');
}
file_put_contents($file, $remote);
$this->git->add($file);
$this->git->commit('Add remote.');
$this->git->checkout('master');
file_put_contents($file, $local);
$this->git->add($file);
$this->git->commit('Add local.');
$this->git->merge('original');
return file_get_contents($file);
}