Home » Php » php – How to clone repository with Composer without –prefer-source? (using Symfony 2)

php – How to clone repository with Composer without –prefer-source? (using Symfony 2)

Posted by: admin July 12, 2020 Leave a comment

Questions:

Scenario: I am working with Symfony 2.2. In my list of required packages is also one of my github repositories, let’s call it “TestLib”.

I know that I can define the github url as additional repository in Symfony’s composer.json to download “TestLib” via Composer from Github.

Problem: I cannot commit to “TestLib” repository as there is no local .git directory in the “TestLib” directory. I guess composer is fetching a zip from Github and not cloning it.

So my question is: is there a way to specifiy in Symfony’s composer.json that Composer should clone TestLib?

Question 2: Maybe my workflow is wrong – so if you also have this scenario – how do you handle this?

How to&Answers:

Adding @dev to the package version clones the repository too.

{
  "require": {
    'package': '*@dev'
  }
}

Also is possible setup source as preference in the composer.json

{
 "config": {
     "preferred-install": "source"
 }
}

Answer:

What I typically do if I notice that a vendor has an issue is rm -rf vendor/foo/bar to remove it and then I run composer install --prefer-source to get it back as a git repo.

Answer:

What I did was add my github repo to packagist.org then I did this:

composer require malhal/createdby dev-master --prefer-source

This appears to add the require line to composer.json and also get it as a git repo, unfortunately this only works once so if you wouldn’t be able to reuse the composer.json for a new install and would need to delete the require line and then remember to do this same command again. This command also downloads the git repo you don’t have to do another composer update.