<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: WP Git Updater</title>
    <description>The latest articles on DEV Community by WP Git Updater (@wpgitupdater).</description>
    <link>https://dev.to/wpgitupdater</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3438%2F4bd1eb15-68df-488d-a604-697c181c9984.png</url>
      <title>DEV Community: WP Git Updater</title>
      <link>https://dev.to/wpgitupdater</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wpgitupdater"/>
    <language>en</language>
    <item>
      <title>WPDock - A Simple WordPress Development Environment Using Docker</title>
      <dc:creator>Lee Mason</dc:creator>
      <pubDate>Tue, 26 Jan 2021 13:23:04 +0000</pubDate>
      <link>https://dev.to/wpgitupdater/wpdock-a-simple-wordpress-development-environment-using-docker-84d</link>
      <guid>https://dev.to/wpgitupdater/wpdock-a-simple-wordpress-development-environment-using-docker-84d</guid>
      <description>&lt;p&gt;Here at &lt;a href="https://wpgitupdater.dev"&gt;WP Git Updater&lt;/a&gt; we are announcing a new WordPress development environment using Docker!&lt;/p&gt;

&lt;p&gt;WordPress already provides a docker image which can be used for development, but it has a &lt;a href="https://github.com/docker-library/wordpress/issues/480"&gt;few&lt;/a&gt; &lt;a href="https://github.com/docker-library/wordpress/issues/30"&gt;problems&lt;/a&gt; that are not dealt with in the usual docker way. We never really found a configurable solution to these problems, which always meant using the docker image requiring some repeated “must know” steps for everything the containers need to be built. Or reverting to using developer machines local php/apache/mysql or another dev environment tool.&lt;/p&gt;

&lt;p&gt;We have used various other tools and they do not work well for us. Some just take over the host machine ports without telling you, others just do not provide all the features we need. WPDock is purposely designed to be a very thin layer over docker.&lt;/p&gt;

&lt;p&gt;By design, the WordPress image is just WordPress. There is no https support, mail catching or database access. This means again polluting your dev machines MySql tool of choice with numerous connection profiles.&lt;/p&gt;

&lt;p&gt;We wanted to find a way to run the WordPress Docker stack as it’s a perfect use case for docker in a team/collaboration environment. With Docker Compose we wanted a setup you can just "start" that includes some common tools used for WordPress local development.&lt;/p&gt;

&lt;p&gt;We set out to achieve the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single command to start/stop the whole environment&lt;/li&gt;
&lt;li&gt;Easy access to the MySql database&lt;/li&gt;
&lt;li&gt;Mail catching out of the box&lt;/li&gt;
&lt;li&gt;No WordPress loopback or Rest Api health check errors&lt;/li&gt;
&lt;li&gt;Simple access to &lt;code&gt;WP-CLI&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;HTTPS/domain name support&lt;/li&gt;
&lt;li&gt;As little development machine pollution as possible&lt;/li&gt;
&lt;li&gt;Simple database sharing between team members&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Enter WPDock
&lt;/h2&gt;

&lt;p&gt;WPDock is a very simple bash script that gives you all of the above. All you need is docker for basic operation, and if you want https/tls support there is only 1 other dependency &lt;a href="https://github.com/FiloSottile/mkcert"&gt;mkcert&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Checkout the repository and install instructions over on &lt;a href="https://github.com/wpgitupdater/wpdock"&gt;Github&lt;/a&gt;. WPDock is a simple executable you just need to place in your path.&lt;/p&gt;

&lt;p&gt;You can create a WPDock environment with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock init 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create a &lt;code&gt;.env&lt;/code&gt; file in your current folder with the required environment variables for operation. It will also add the &lt;code&gt;.env&lt;/code&gt; file and the &lt;code&gt;.wpdock&lt;/code&gt; folder to a gitignore file and finally it will create a &lt;code&gt;.htaccess&lt;/code&gt; file which prevents these dot files ever being accessible should you mistakenly upload them to a server.&lt;/p&gt;

&lt;p&gt;Then to run the whole stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock up or wpdock start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it!&lt;/p&gt;

&lt;p&gt;With this (and depending on what you have changed in the &lt;code&gt;.env&lt;/code&gt; file. You will have access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WordPress on &lt;code&gt;localhost:8080&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PhpMyAdmin on &lt;code&gt;localhost:8181&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Mailhog catching WordPress emails for review on &lt;code&gt;localhost:8282&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;MySql on &lt;code&gt;localhost:33060&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your current directory is bound as the &lt;code&gt;wp-content&lt;/code&gt; folder on the WordPress container and WordPress is already installed for you to start developing with.&lt;/p&gt;

&lt;p&gt;What's more, the only development machine pollution is the ports being bound. WpDock will not use anything other than docker and those ports. This is perfect and gives you the flexibility to adjust the .env variables in another folder and run multiple instances at the same time!&lt;/p&gt;

&lt;p&gt;This also follows WP Git Updaters recommended structure for WordPress source controlled setups. With this setup you can &lt;code&gt;git init&lt;/code&gt; in the bound &lt;code&gt;wp-content&lt;/code&gt; folder, ignore the uploads folder and your all set. &lt;/p&gt;

&lt;h3&gt;
  
  
  Need to access &lt;code&gt;WP-CLI&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;Of course we have made this simple too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock user list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any commands not recognised by &lt;code&gt;wpdock&lt;/code&gt; will pass through to the cli container.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sharing Databases Between Team Members
&lt;/h3&gt;

&lt;p&gt;You can of course use various mature tools to synchronise databases. But for simple usage &lt;code&gt;wpdock&lt;/code&gt; provides &lt;code&gt;dump&lt;/code&gt; and &lt;code&gt;import&lt;/code&gt; commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock dump &lt;span class="c"&gt;# dump.sql will be in your current directory&lt;/span&gt;
wpdock import &lt;span class="c"&gt;# will import the dump.sql file in your current directory&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stopping Environment
&lt;/h3&gt;

&lt;p&gt;Stopping the environment can be done in a few ways:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock stop &lt;span class="c"&gt;# stops the containers&lt;/span&gt;
wpdock down &lt;span class="c"&gt;# stops and removes the containers&lt;/span&gt;
wpdock destroy &lt;span class="c"&gt;# stops and removes the containers + shared volumes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Other Commands
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;[service]&lt;/code&gt; can be one of: &lt;code&gt;wordpress&lt;/code&gt;, &lt;code&gt;cli&lt;/code&gt;, &lt;code&gt;db&lt;/code&gt;, &lt;code&gt;mailhag&lt;/code&gt;, &lt;code&gt;phpmyadmin&lt;/code&gt;, and &lt;code&gt;caddy&lt;/code&gt; (more on this later).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock &lt;span class="nb"&gt;help&lt;/span&gt; &lt;span class="c"&gt;# displays command help&lt;/span&gt;

wpdock file .env &lt;span class="c"&gt;# displays the default env variables should you want to create or amend an existing .env file&lt;/span&gt;

wpdock &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;service] &lt;span class="c"&gt;# eg: wpdock exec wordpress bash&lt;/span&gt;

wpdock run &lt;span class="o"&gt;[&lt;/span&gt;service] … &lt;span class="c"&gt;# eg: wpdock run cli bash&lt;/span&gt;

wpdock logs &lt;span class="o"&gt;[&lt;/span&gt;service] &lt;span class="c"&gt;# tails all container logs, or pass a service to view specific logs&lt;/span&gt;

wpdock compose … &lt;span class="c"&gt;# proxy commands directly to docker-compose&lt;/span&gt;

wpdock … &lt;span class="c"&gt;# is the same as wpdock run cli wp …&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see WPDock is a very thin layer over Docker Compose commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Domains with Valid Local TLS/HTTPS Certificates
&lt;/h2&gt;

&lt;p&gt;Inline with the &lt;a href="https://12factor.net/dev-prod-parity"&gt;The Twelve Factor App&lt;/a&gt; recommendations on Dev/Prod parity.&lt;br&gt;
In 2021 there really isn’t an excuse not to use TLS even for local development.&lt;/p&gt;

&lt;p&gt;What’s more if you plan on using any form of shopping cart plugins without TLS you're likely to run into some issues over plain http.&lt;/p&gt;

&lt;p&gt;WPDock provides a simple option to enable custom domains with https for your development environments.&lt;/p&gt;

&lt;p&gt;Let's take a look and how it works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wpdock up &lt;span class="nt"&gt;--https&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the above command and the &lt;code&gt;WORDPRESS_SITE_HOST&lt;/code&gt; .env variable setup you can develop locally with trusted TLS encryption for WordPress!&lt;/p&gt;

&lt;h3&gt;
  
  
  How does this work?
&lt;/h3&gt;

&lt;p&gt;WpDock needs 1 additional tool to provide this feature: &lt;a href="https://github.com/FiloSottile/mkcert"&gt;mkcert&lt;/a&gt;.&lt;br&gt;
Mkcert adds a locally trusted CA to your development machine, and allows you to generate TLS certificates against that CA.&lt;/p&gt;

&lt;p&gt;This means no more untrusted certificate warnings.&lt;/p&gt;

&lt;p&gt;First install Mkcert as detailed in their documentation. Run &lt;code&gt;mkcert -install&lt;/code&gt; once to install the CA and let WpDock take over from there.&lt;/p&gt;

&lt;p&gt;When you run &lt;code&gt;wpdock up —https&lt;/code&gt; the following additional steps are performed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;wpdock&lt;/code&gt; will generate a &lt;code&gt;Caddyfile&lt;/code&gt; in the &lt;code&gt;.wpdock&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wpdock&lt;/code&gt; will generate certificate and key files from your &lt;code&gt;WORDPRESS_SITE_HOST&lt;/code&gt; env variable in the &lt;code&gt;.wpdock/certs&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;A new caddy web server container will be started, with the generated files mapped into the correct locations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caddy is a super simple to use web server which is perfect for what &lt;code&gt;wpdock&lt;/code&gt; needs to provide TLS support.&lt;br&gt;
The generated &lt;code&gt;Caddfyfile&lt;/code&gt; simply creates a reverse proxy from &lt;code&gt;WORDPRESS_SITE_HOST&lt;/code&gt; to the wordpress container&lt;/p&gt;

&lt;p&gt;The Caddy container does need to bind to ports &lt;code&gt;80&lt;/code&gt; and &lt;code&gt;443&lt;/code&gt; on your development machine to provide this mapping.&lt;/p&gt;

&lt;p&gt;Now all you need to do is make sure &lt;code&gt;WORDPRESS_SITE_HOST&lt;/code&gt; points to &lt;code&gt;127.0.0.1&lt;/code&gt; via your &lt;code&gt;/etc/hosts&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Your website will be available over https/tls, automatically forwarding http requests, with a trusted certificate.&lt;/p&gt;

&lt;p&gt;Additionally &lt;code&gt;wpdock&lt;/code&gt; will update your database and replace the &lt;code&gt;localhost:${PORT}&lt;/code&gt; urls with the new domain name.&lt;/p&gt;

&lt;p&gt;When you stop your development environment, everything is cleaned up. Port &lt;code&gt;80&lt;/code&gt; and &lt;code&gt;443&lt;/code&gt; are free again to be used.&lt;/p&gt;

&lt;p&gt;Head over to the Project to find out how to install and more on the commands: &lt;a href="https://github.com/wpgitupdater/wpdock"&gt;https://github.com/wpgitupdater/wpdock&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback Welcome
&lt;/h2&gt;

&lt;p&gt;We hope you enjoy using WPDock. For us it's a small but useful addition to our development workflow.&lt;/p&gt;

&lt;p&gt;WPDock is open source and can be found at &lt;a href="https://github.com/wpgitupdater/wpdock"&gt;https://github.com/wpgitupdater/wpdock&lt;/a&gt;. Any improvements/suggestions are more than welcome.&lt;/p&gt;

&lt;p&gt;At Wp Git Updater we develop locally using Apple machines, but we believe all of the commands will also work on Linux environments (please let us know if you have any issues).&lt;/p&gt;

&lt;p&gt;For windows users we are more than happy to accept PR’s that provide support if it can be achieved.&lt;/p&gt;

&lt;p&gt;Stay tuned, in the next few posts we are going to cover some of the features in more detail, and show you a setup automatically resolving your chosen tld to localhost using DNSMasq.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>docker</category>
      <category>github</category>
    </item>
    <item>
      <title>And We're Live!</title>
      <dc:creator>Lee Mason</dc:creator>
      <pubDate>Tue, 19 Jan 2021 15:59:23 +0000</pubDate>
      <link>https://dev.to/wpgitupdater/and-we-re-live-3m5i</link>
      <guid>https://dev.to/wpgitupdater/and-we-re-live-3m5i</guid>
      <description>&lt;p&gt;Over the last few months we have been testing, adding new features and getting ready for the big launch.&lt;/p&gt;

&lt;p&gt;Its finally here with automated theme and plugin updates, run via gitlab action workflows.&lt;/p&gt;

&lt;p&gt;We still have much more we are working on that will be coming in the future:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;mu-plugin updates&lt;/li&gt;
&lt;li&gt;Gitlab, Bitbucket, Travis and Circle CI integrations&lt;/li&gt;
&lt;li&gt;Auto update disabler plugin for plugins managed by WP Git Updater&lt;/li&gt;
&lt;li&gt;Auto merging updates&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Additionally in the coming days we will be launching our Docker based WordPress development environment we use internally for WordPress development.&lt;/p&gt;

&lt;p&gt;As part of the launch we are offering you a massive &lt;strong&gt;40% discount&lt;/strong&gt; on any of the subscription plans &lt;strong&gt;FOREVER&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Simply use the coupon code &lt;strong&gt;LAUNCH&lt;/strong&gt; when subscribing.&lt;/p&gt;

&lt;p&gt;But don’t wait too long, the &lt;strong&gt;LAUNCH&lt;/strong&gt; coupon expires the 28th of February.&lt;/p&gt;

&lt;p&gt;Before then you can take advantage of the 10 day free trial offered for new users.&lt;/p&gt;

&lt;p&gt;Once again thank you for your interest in WP Git Updater, if you need support, want to request a feature, or just catch up please don’t hesitate to let us know&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wpgitupdater.dev/register"&gt;Signup Today!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>github</category>
    </item>
    <item>
      <title>Our Display Git Status plugin has just been approved on the WordPress.org plugin marketplace</title>
      <dc:creator>Lee Mason</dc:creator>
      <pubDate>Sat, 19 Dec 2020 00:14:06 +0000</pubDate>
      <link>https://dev.to/wpgitupdater/our-display-git-status-plugin-has-just-been-approved-on-the-wordpress-org-plugin-marketplace-1p3b</link>
      <guid>https://dev.to/wpgitupdater/our-display-git-status-plugin-has-just-been-approved-on-the-wordpress-org-plugin-marketplace-1p3b</guid>
      <description>&lt;p&gt;&lt;a href="https://wordpress.org/plugins/display-git-status/"&gt;Display Git Status&lt;/a&gt; is a utility plugin to provide basic git status information right in the WordPress admin bar.&lt;/p&gt;

&lt;p&gt;We have created this plugin as a complimentary and free plugin for our users. Given our service offers Git source controlled plugin and theme updates. It's obvious such a feature would be beneficial right within the admin area. And we were surprised there wasn't already a solution.&lt;/p&gt;

&lt;p&gt;This plugin is great as a gentle reminder or flag to see if your staging or even production site becomes out of sync with your repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RWSsGnJr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://wpgitupdater.dev/storage/uploads/display-git-status-screenshot.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RWSsGnJr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://wpgitupdater.dev/storage/uploads/display-git-status-screenshot.jpg" alt="Display Git Status Settings Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once activated just look out for the admin bar icon link turning to a red background, which indicates there are changes you probably need to investigate.&lt;/p&gt;

&lt;p&gt;We have added a new page to the documentation for our plugin (soon to be plugins) &lt;a href="https://wpgitupdater.dev/docs/latest/plugins#display-git-status"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>git</category>
    </item>
    <item>
      <title>WP Git Updater now supports theme updates</title>
      <dc:creator>Lee Mason</dc:creator>
      <pubDate>Thu, 17 Dec 2020 20:07:39 +0000</pubDate>
      <link>https://dev.to/wpgitupdater/wp-git-updater-now-supports-theme-updates-323m</link>
      <guid>https://dev.to/wpgitupdater/wp-git-updater-now-supports-theme-updates-323m</guid>
      <description>&lt;p&gt;That's right! You can now update WordPress plugins and themes using WP Git Updater.&lt;/p&gt;

&lt;p&gt;The primary goal of WP Git Updater is to optimize and automate updates on your Git controlled WordPress websites. We started with plugins but early on it became clear theme updates were a must have. We felt this was such a critical feature we needed to make sure it was available before we officially released WP Git Updater.&lt;/p&gt;

&lt;p&gt;Additionally we have been able to retain the same configuration format with some new additions. This is down to some forward thinking knowing theme features were coming in the future.&lt;/p&gt;

&lt;p&gt;In short just adding:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;themes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;themes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To your config file is sufficient to enable theme updates.&lt;/p&gt;

&lt;p&gt;There are of course further customizations available if required. Full details can be found in the &lt;a href="https://wpgitupdater.dev/docs/latest/configuration"&gt;Documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Just like plugins you can now automate theme branch and pull request creation on infrastructure and terms you define.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>github</category>
      <category>git</category>
    </item>
    <item>
      <title>A look at WordPress source control strategies</title>
      <dc:creator>Lee Mason</dc:creator>
      <pubDate>Mon, 14 Dec 2020 22:09:22 +0000</pubDate>
      <link>https://dev.to/wpgitupdater/a-look-at-wordpress-source-control-strategies-4fa3</link>
      <guid>https://dev.to/wpgitupdater/a-look-at-wordpress-source-control-strategies-4fa3</guid>
      <description>&lt;p&gt;In this post we are going to look at the benefits, available tools and a few common patterns to use source control with a WordPress powered website.&lt;/p&gt;

&lt;p&gt;Source control is quite a generalisation. There are many source control implementations. The two biggest are &lt;strong&gt;GIT&lt;/strong&gt; and &lt;strong&gt;SVN&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the purposes of this post we are going to be talking about &lt;strong&gt;GIT&lt;/strong&gt; as a source control tool, after all it’s in our name.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits
&lt;/h2&gt;

&lt;p&gt;If you are a single administrator of a WordPress website, source control allows you to maintain a single source of truth for your website’s files. In case of problems it provides the ability to “revert/rollback” changes and it allows you to review the history of file changes.&lt;/p&gt;

&lt;p&gt;Additionally with branches, tags and commits you have fine grain control and authority on changes to be made.&lt;/p&gt;

&lt;p&gt;For mission critical Websites with development/staging environments, you can selectively apply changes and review before “merging” into the production codebase.&lt;/p&gt;

&lt;p&gt;Source control really shines when working in larger teams. It enables easier collaboration and mechanisms for applying outside changes to your own work. Conflict resolution is provided with diffing tools to review and apply.&lt;/p&gt;

&lt;p&gt;When twinned with a source control provider like Github, Gitlab, or Bitbucket you have additional features like Pull Requests and issue trackers to cross reference changes with bugs whilst giving project maintainers control over which updates are applied to main branches and when.&lt;/p&gt;

&lt;p&gt;For WordPress specifically, source control can remove the variability of WordPress core, plugin and theme updates. For most WordPress websites there are third party files operating your website, and depending on your update strategy these changes may be out of your control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Existing tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  VersionPress
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://versionpress.com"&gt;VersionPress&lt;/a&gt; treats your site file and its database as one and source controls everything. This takes the concept of GIT and brings it into the WordPress admin area. Instead of GIT being used as a background process to manage the state of your website files, VersionPress turns your whole website including content and settings into a GIT repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  WP Pusher
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://wppusher.com"&gt;WP Pusher&lt;/a&gt; is more traditional and looks specifically at individual plugins or themes. It provides the ability to install or update directly from a GIT repository, with features to choose a specific branch to use.&lt;/p&gt;

&lt;h3&gt;
  
  
  WP Rollback
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://wordpress.org/plugins/wp-rollback"&gt;WP Rollback&lt;/a&gt; takes a defensive approach and utilises source control to rollback plugin or theme updates directly from WordPress repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common source control approaches
&lt;/h2&gt;

&lt;p&gt;Although some of the tools mentioned above do more than source control your files, in this section we are going to focus on WordPress file source control.&lt;/p&gt;

&lt;p&gt;We are also going to look at these patterns from a “pull changes” perspective. This means the website is only updated from source control. The website doesn’t "push changes" back to GIT.&lt;/p&gt;

&lt;h3&gt;
  
  
  Source control everything
&lt;/h3&gt;

&lt;p&gt;This pattern takes your website files, including WordPress itself and commits it to source.&lt;/p&gt;

&lt;p&gt;Using this approach, core, plugin and theme updates should be turned off within the administration area.&lt;/p&gt;

&lt;p&gt;The advantages of this are that everything, even down to the specific WordPress version, is static and controlled. For mission critical sites this could be the right approach as it leaves nothing to chance.&lt;/p&gt;

&lt;p&gt;Unfortunately this advantage is also its disadvantage. WordPress core updates can be applied automatically for good reason. Updates may include security patches to protect your website and without automatic updates, you would be responsible to ensure WordPress is always up to date.&lt;/p&gt;

&lt;h3&gt;
  
  
  Source control the &lt;code&gt;wp-content&lt;/code&gt; folder
&lt;/h3&gt;

&lt;p&gt;This is a common approach and provides an advantage over the first method. Using this approach WordPress core updates are usually turned on to ensure a secure system.&lt;/p&gt;

&lt;p&gt;This pattern also provides some flexibility. For example you may choose some highly trusted plugins or themes that can be automatically updated. For this to work without your Website and GIT becoming divergent you can “ignore” certain files and folders from source.&lt;/p&gt;

&lt;p&gt;Excluding any ignored files or folder (or uploads) everything within your &lt;code&gt;wp-content&lt;/code&gt; directory would be controlled. This would mean themes and plugins would only be updated when they are updated in GIT.&lt;/p&gt;

&lt;p&gt;A disadvantage of this approach is that updates would require manual intervention. You would need to apply the updates in source and pull them to your website.&lt;/p&gt;

&lt;p&gt;This approach provides protection against incompatibilities between plugins and themes. It doesn't safeguard against WordPress core updates. However, WordPress has a long and positive history on unknown breaking changes for core updates, so it is suitable for most scenarios. &lt;/p&gt;

&lt;h3&gt;
  
  
  Source control per plugin/theme
&lt;/h3&gt;

&lt;p&gt;This approach does not source control your website in any way it controls a particular plugin or theme. You could use this approach along with some of the tools mentioned earlier to manage individual parts of your website.&lt;/p&gt;

&lt;p&gt;This approach won't provide you any safeguards against future update compatibilities as the pattern is concerned only with the plugin or theme it controls.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about the &lt;code&gt;uploads&lt;/code&gt; folder?
&lt;/h3&gt;

&lt;p&gt;In all of the patterns above you would not source control the &lt;code&gt;uploads&lt;/code&gt; folder. Unless you're using a tool like VersionPress, this content is directly related to the contents of your database. This content is also ever changing via administrators so whenever new uploads are created your website and source control would be out of sync.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does WP Git Updater fit in?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wpgitupdater.dev"&gt;WP GIT Updater&lt;/a&gt; is designed to make the first two patterns (source control everything, source control the &lt;code&gt;wp-content&lt;/code&gt; folder) much easier to manage and maintain.&lt;/p&gt;

&lt;p&gt;WP GIT Updater will automate branch and pull request creation for any updates available, from the WordPress plugins or themes repository.&lt;/p&gt;

&lt;p&gt;It can automate this process via manual invocation, or via a schedule defined within a continuous integration environment (for example Github Actions).&lt;/p&gt;

&lt;p&gt;What this means in practise is once in place, every day (or a schedule you define) you can take advantage of your CI system to reduce developer hours performing updates.&lt;/p&gt;

&lt;p&gt;To "make an update" on a source controlled website the steps usually involved are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull down the source&lt;/li&gt;
&lt;li&gt;Review each plugin/theme for updates (either via a local environment, or manual searching)&lt;/li&gt;
&lt;li&gt;Perform each update&lt;/li&gt;
&lt;li&gt;Add the update files&lt;/li&gt;
&lt;li&gt;Commit the changes&lt;/li&gt;
&lt;li&gt;Push the changes to a branch&lt;/li&gt;
&lt;li&gt;Create a pull request for review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These steps may take a seasoned developer only a few minutes for each update, but a website may have many updates, especially if the task is performed infrequently.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wpgitupdater.dev"&gt;WP GIT Updater&lt;/a&gt; automates this process for you. What's more, each update branch and pull request will have consistent naming, version &lt;code&gt;from&lt;/code&gt; and &lt;code&gt;to&lt;/code&gt; details, and any author provided changelog added to the pull request for review, eliminating a low complexity but time consuming task.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
