protected function doGitInit(GitWorkingCopy $workingCopy, $url, $branch)
    {
        $workingCopy->init();
        $workingCopy->remote('add', 'origin', $url);

        try {

            $this->output->writeln("Attempting to fetch <path>origin/{$branch}</path>", OutputInterface::VERBOSITY_VERBOSE);

            $workingCopy
                ->fetch('origin', $branch)
                ->checkout('-f', $branch);

        } catch (GitException $exception) {

            $this->output->writeln("Fetch failed, creating new branch instead", OutputInterface::VERBOSITY_VERBOSE);

            $workingCopy
                ->checkout('--orphan', $branch)
                ->run(['commit', '--allow-empty', '-m', "Branch created by steak"])
                ->push('-u', 'origin', $branch);

        }

        return $workingCopy->clearOutput();
    }