Composer allows different branches of a Git repository to be checked out for use as a third party library. To do so first add the git repository to your composer.josn file:
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:org/repo.git"
}
]
Now the repository is known, add the branch to the composer.json require section:
"require": {
"org/repo": "dev-branch1"
}
You can even choose a specfic commit:
"require": {
"org/repo": "dev-branch1#ec457d0a974c48d5685a7efa03d137dc8bbde7e3"
}
Examples
As explained on the getcomposer.org website, login details can be provided to access private repositories. For example, using ssh:
{
"require": {
"org/repo": "dev-branch1"
},
"repositories": [
{
"type": "composer",
"url": "ssh2.sftp://bitbucket.org",
"options": {
"ssh2": {
"username": "composer",
"pubkey_file": "/home/username/.ssh/id_rsa.pub",
"privkey_file": "/home/username/.ssh/id_rsa"
}
}
}
]
}
Or using an SSL certificate key:
{
"require": {
"org/repo": "dev-branch1"
},
"repositories": [
{
"type": "vcs",
"url": "https://bitbucket.org:org/repo.git",
"options": {
"ssl": {
"local_cert": "/home/username/.ssl/composer.pem"
}
}
}
]
}
Or using HTTP Basic authentication:
{
"require": {
"org/repo": "dev-branch1"
},
"repositories": [
{
"type": "vcs",
"url": "https://username:password@bitbucket.org/com/repo.git"
}
]
}
This provides fairly good SSL encrypted security, although it’s a good idea to remove the username & password credentials from the Git repository and instead place them in a file named auth.json within the COMPOSER_HOME directory, as such:
{
"https://bitbucket.org": {
"http-basic": {
"bitbucket.org": {
"username": "username",
"password": "password"
}
}
}
}
You can also specify HTTP headers directly, which enables our preferred method for stateless authentication, JWT (Java Web Tokens):
{
"repositories": [
{
"type": "vcs",
"url": "https://bitbucket.org/com/repo.git",
"options": {
"http": {
"header": [
"authorization: authenticated.jwt.token"
]
}
}
}
]
}
Conclusion
As can be seen from the above examples, Composer enables a flexible range of options in regards to the selection and integration of Git repositories along with their respective branches and versions.
Like this:
Like Loading...