How to Checkout two git branches simultaneously¶
You may want to have two branches of the same Git project checked out at the same time, routed to the same database.
The most useful reason for this is if you have two branches in the same project running on two different versions of PHP.
We are using an example of checking out
First, we need to create a git worktree. Go to where your current git project is saved and checkout to
git worktree add ../project_name-develop develop
../project_name-develop is the path of the new project.
develop is the branch you want to checkout.
Now you have two branches of the same git project saved on your machine.
Please see resource: Git Worktree Documentation, for more information on Git Worktrees.
Add the new directory to your
Homestead.yaml file, you don't need to edit the previous mapping, only add the new one.
Your file should look like:
folders: ... - map: .../project-name to: /home/vagrant/project-name - map: .../project-name-develop to: /home/vagrant/project-name-develop sites: ... - map: project-name.test to: /home/vagrant/project-name/public - map: project-name-develop.test to: /home/vagrant/project-name-develop/public databases: ... - project-database
Notice we make no edit to databases, that is because both branches still use the same database.
Changing PHP version¶
With some projects they may require sites to use different versions of PHP, if so, follow these steps (using the example of changing the
main branch to PHP 5.6 and
develop to 7.2).
Homestead version 6 and above (you should be running homestead 7) allows you to assign php version to the sites automatically.
sites: ... - map: project_name.test to: /home/vagrant/project_name/public php: "5.1" - map: project_name-develop.test to: /home/vagrant/project_name-develop/public php: "7.1"
PHP versions 5.6, 7.0, 7.1 and 7.2 are normally automatically installed in Homestead. If you need a different version then installed using PHPBrew (Information on how to do this can be found here PHPBrew documentation).
Edit hosts file¶
Add the new site to your
hosts file (
/etc/hosts on Debian-based systems):
... 192.168.56.10 project_name-develop.test
It is important you remember to re-provision Vagrant using:
vagrant reload --provision
Setting up in project directories¶
Make sure you copy the the .env file from the
main project to the
composer install php artisan migrate php artisam db:seed
To test which version of php is running, simply put
<?p phpinfo() > on an easily accessible view and visit the webpage.
Command line PHP¶
Changing the version of PHP in
Homestead.yml changes the PHP that serves each site, but the command-line version of PHP will always be the system default.
If you need to change the command-line PHP, use
$ sudo update-alternatives --config php There are 5 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/php7.3 73 auto mode 1 /usr/bin/php5.6 56 manual mode 2 /usr/bin/php7.0 70 manual mode 3 /usr/bin/php7.1 71 manual mode 4 /usr/bin/php7.2 72 manual mode * 5 /usr/bin/php7.3 73 manual mode Press <enter> to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/bin/php5.6 to provide /usr/bin/php (php) in manual mode $ php --version PHP 5.6.40-8+ubuntu18.04.1+deb.sury.org+1 (cli) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
And you will be given the option to change PHP version.