Categories
Gitflow Mac Samuel

Updating WordPress Inside A Gitflow Repo

This document is comprised of testing notes while going through the learning process of updating a wordpress site in a repo organized under the gitflow model. The steps below can be followed to update a wordpress site. This document assumes you have MAMP installed locally on your machine.

Generic Useful Commands:
Git branch (shows current branch you are on)
Git branch –a (to list out branches in the repo)
Git status (to see info on our current branch)
Git remote (to see remote branches)
Git tag (to see list of tags)
Git add . (to stage files for a commit)_

Steps Taken to Setup first Gitflow Repo & Update WordPress:

Open terminal and navigate to htdocs:

cd /

This will take us to the actual root directory. Now type:

ls

we should see the full list of folders, including application folder, now type:

cd /Applications/MAMP/htdocs

We should now be in htdocs folder.

Clone the repo

To clone the repo we need to setup git access. Create the keypair following the directions here:
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

Then copy they key into github following the directions here:
https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

Now Clone the repo down
Navigate to the folder you would like the repo stored in (you should already be in the htdocs folder from steps 1 and 2 above).

Git clone git@github.com:user-name/git-flow-test.git

Now fetch the headers:

Git fetch
Git remote (to see remote branches)

Define who we are in the Repo:
–please note this sets the user for all projects so you will only need to do this once

git config –global user.email your-email-address@your-domain

Create Master Branch:

git checkout -b master
git status (to see if we are on master)

Create Readme.md file
Create readme.md file and put into the repo:
touch readme.md
echo “## This is a markdown readme file” >> readme.md

Complete first commit and push:

Commit this file to the repo
Git add .
Git commit –m “adding readme file”
Git push

–please note if this is your first commit you can select to use the new git 2.0 simple commit type
git config –-global push.default simple

Branch from Master to create Development branch:

git checkout -b dev master

Add old version of wordpress to development:
–please note this is only for testing purposes. In a real life situation the old version of wordpress would already be on the dev branch and we would skip to the step below and create our feature branch from dev

Download old version of wordpress from here: https://wordpress.org/download/release-archive/
Physically move wordpress files into our project folder, then run

git add .
git commit –m “adding wordpress 4.8.1”
git push

— please note on first push we will need to run:
git push –set-upstream origin dev

Branch from development to create new feature branch:

git checkout -b feature/wp-update dev
--Please note feature branches should be named "feature/wp-update" or "feature/some-other-update"

Commit Code To Feature Branch:
–Please note we need to ensure that the local environment is running the same version of php that the client’s live site is running for testing purposes. Update this version in MAMP to mirror the client’s hosting environment

Run the WP install to setup the site:
–use root for local wp site username and root for local password

Run the WP update in WP admin, then run

git add .
git commit –m “updating from wordpress 4.8.1 to 4.8.2”
git push

Merge wp-update feature branch into development branch

git checkout dev
git merge --no-ff feature/wp-update -m “merge wp-update branch into dev”
git push

Branch from dev to create Release branch

git checkout -b release dev

Delete feature Branch

git branch –d feature/wp-update
git push --delete origin feature/wp-update

Merge from release branch into Master
–please note merge from release to master requires final approval from senior dev staff & final client approval

git checkout master
git merge --no-ff release -m “merge wp-update branch into development”
git push

Tag first merge into Master with 1.0.0
–follow semantic versioning numbers http://semver.org/. In this tutorial the first release is tagged with 1.0.0. In a real life situation please note the current version and update accordingly, IIE from 1.0.1 > 1.0.2

git tag -a 1.0.0 –m “updating from wordpress 4.8.1 to 4.8.2”
git push --tags

Helpful links on git tagging:
https://git-scm.com/book/en/v2/Git-Basics-Tagging
https://gist.github.com/justinfrench/89712

General Notes:
WordPress updates do not require database updates to be performed locally. Updating the files on the live server and visiting a few admin pages will perform the database updates on the live server. We should never make updates to a database locally and move that database live. The best possible workflow is one where code moves up and content moves down: https://pantheon.io/docs/pantheon-workflow/

When updating versions of PHP our workflow is:
-clone down site repo to local machine
-update version of php locally
-test site locally to make sure everything works
(if something breaks, create feature branch from dev & make fixes, test locally then merge to development).
-update version of php on development server
-final QA by PM
-merge code to release branch for final approval by senior dev
-update version of PHP on live
-merge code to master from release branch

When updating wordpress versions our workflow is:
-clone down site repo to local machine
-create feature branch from dev and update locally
-test locally to make sure everything works (use php version from clients live site)
-merge to development from release branch
-final QA by PM
-Merge to release branch for final approval by senior dev
-Merge to live

Random Notes:

Writing a commit message without using -m tag:

Press i to enter insert mode.
Now you can type your message, as if you were in a normal (non-modal) text editor.
Press esc to go back to command mode.
Then type :w followed by enter to save.
Finally :q followed by enter to quit.

Deleting Git Tags:

# delete local tag ‘12345’
git tag -d 12345

# delete remote tag ‘12345’
git push –delete origin tagName